Мне нужно разбить огромный файл на несколько небольших файлов. Каждый из файлов назначения определяется смещением и длиной в виде числа байтов. Я использую следующий код:
private void copy(string srcFile, string dstFile, int offset, int length)
{
BinaryReader reader = new BinaryReader(File.OpenRead(srcFile));
reader.BaseStream.Seek(offset, SeekOrigin.Begin);
byte[] buffer = reader.ReadBytes(length);
BinaryWriter writer = new BinaryWriter(File.OpenWrite(dstFile));
writer.Write(buffer);
}
Учитывая, что я должен называть эту функцию примерно 100 000 раз, она замечательно медленная.
- Есть ли способ заставить Writer напрямую подключаться к Reader? (То есть без фактической загрузки содержимого в буфер в памяти.)