Я сталкиваюсь с чем-то тривиальным, но похоже, что данные сбрасываются на диск (из буфера FileStream), когда данные, которые я буферизирую, достигают размера буфера FileStream.
//use the FileStream buffer to actually buffer the data to be written, so segments are written as desired.
FileStream writeStream = new FileStream(filename, FileMode.Append, FileAccess.Write, FileShare.None, CommandOperationBufferSize);
BinaryWriter binWriter = new BinaryWriter(writeStream);
byte[] FullSize = new byte[CommandOperationTotalSize];
//the BinaryWriter will flush when the FileStream buffer is hit
binWriter.Write(FullSize); //DATA FLUSHES TO DISK HERE!
//if wait, wait five seconds
if (CommandOperation == "writewait" || CommandOperation == "appendwait")
{
Thread.Sleep(5000);
writeStream.Flush();
Thread.Sleep(5000);
}
writeStream.Close();
writeStream.Dispose();
binWriter.Close();
Кто-нибудь может подтвердить, что это так? Что буфер FileStream является фактическим .Flush (), когда буфер FileStream заполнен?
Я спрашиваю, потому что кажется, что если я установлю CommandOperationTotalSize в 1 МБ, а в CommandOperationBufferSize - 64 КБ, данные будут записаны на диск при заполнении буфера.
Звучит так, будто я ответил на свой вопрос, но странно, что буфер FileStream не переполнится? Но, может быть, разработчики API пытаются быть милыми?
Спасибо
Мэтт