Порционное чтение и запись в FileStream
Для создания утилиты бэкапа, требуется работа перемещения файлов путем FileStream (read,write). Из за большого размера файлов, нужно читать с потока и записывать в поток FileStream по частям, вот кусок кода:
//допустим длина fsstream и array 98875
// для порционной работы с потоком мы сделали
int filePart=fsstream.Lenght/100;
while (fstream.Read(array, 0, filePart) > 0)
{
fstreamWrite.Write(array, 0, filePart);//пишем данные
Thread.Sleep(100);
}
Проблема в том, что так как деление
int filePart=fsstream.Lenght/100;
округляет число, файл в destinationFolder-созданный, не попадает несколько байтов, естесственно он как битый(Что делать?
Ответы (1 шт):
Автор решения: t3f
→ Ссылка
Нужно сохранять количество прочитанных байтов, которое возвращает FileStream.Read и использовать его при вызове FileStream.Write:
int count = 0;
byte[] buffer = new byte[filePartSize];
do {
count = sourceStream.Read(buffer, 0, buffer.Length);
destStream.Write(buffer, 0, count);
} while (count > 0);