at System.IO.Strategies.BufferedFileStreamStrategy.WriteSpan(ReadOnlySpan`1 source, ArraySegment`1 arraySegment)
at System.IO.Strategies.BufferedFileStreamStrategy.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
at System.IO.StreamWriter.WriteLine(String value)
Вот упрощенный код:
using var reader = new StreamReader(inputFilename);
using var writer = new StreamWriter(new GZipStream(File.Create(outputFilename), CompressionMode.Compress));
while ((line = reader.ReadLine()) != null)
{
// process `line`
writer.WriteLine(line);
}
Несколько проверок:
- Раздел имеет тип NTFS и не заполнен.
- Имя выходного файла не блокируется и не открывается какой-либо другой программой.
Мне интересно, не упускаю ли я что-то в StreamWriter.
< h2>Обновление 1
Я экспериментировал со следующим, но все еще сталкиваюсь с вышеуказанной проблемой.
var options = new FileStreamOptions
{
Access = FileAccess.Write,
Mode = FileMode.Create,
PreallocationSize = 500000000000 // 500 GB
};
using var writer = new StreamWriter(filename, options);
Подробнее здесь: https://stackoverflow.com/questions/793 ... limitation