Порционное чтение и запись в 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);
→ Ссылка