Design guideline for saving big byte stream in c# [migrated]
- by Praveen
I have an application where I am receiving big byte array very fast around per 50 miliseconds.
The byte array contains some information like file name etc. The data (byte array ) may come from several sources.
Each time I receive the data, I have to find the file name and save the data to that file name.
I need some guide lines to how should I design it so that it works efficient.
Following is my code...
public class DataSaver
{
private static Dictionary<string, FileStream> _dictFileStream;
public static void SaveData(byte[] byteArray)
{
string fileName = GetFileNameFromArray(byteArray);
FileStream fs = GetFileStream(fileName);
fs.Write(byteArray, 0, byteArray.Length);
}
private static FileStream GetFileStream(string fileName)
{
FileStream fs;
bool hasStream = _dictFileStream.TryGetValue(fileName, out fs);
if (!hasStream)
{
fs = new FileStream(fileName, FileMode.Append);
_dictFileStream.Add(fileName, fs);
}
return fs;
}
public static void CloseSaver()
{
foreach (var key in _dictFileStream.Keys)
{
_dictFileStream[key].Close();
}
}
}
How can I improve this code ? I need to create a thread maybe to do the saving.