Я использую следующий код для записи в сжатый файл, который я создаю каждый раз.
using (FileStream fs = File.Open(sortOrderFileName, FileMode.Create,FileAccess.Write, FileShare.ReadWrite))
using (System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(fs, System.IO.Compression.CompressionMode.Compress))
using (StreamWriter sw = new StreamWriter(gzip))
{
// use the streamwriter sw to write to the stream
}
Однако, когда я запускаю это, я получаю IOException с сообщением «Недостаточно места на диске». Однако на диске, на котором я записываю файл, имеется 19 ГБ свободного места.
Согласно документации для GZipStream, его нельзя использовать для записи файла размером более 4 ГБ. Однако размер файла, записанного до сих пор, составляет всего 250 МБ.
Вот исключение:
Тип: System.IO.IOException
Сообщение об исключении: на диске недостаточно места.
Внутреннее исключение:
StackTrace: в System.IO .__ Error.WinIOError (Int32 errorCode, String MaybeFullPath)
в System.IO.FileStream.WriteCore (буфер Byte [], смещение Int32, количество Int32)
в System.IO.FileStream.FlushWrite (Boolean namedFromFinalizer)
в System.IO.FileStream.Dispose (логическое удаление)
в System.IO.Stream.Close ()
в System.IO.Compression.DeflateStream.Dispose (логическое удаление)
в System.IO.Stream.Close ()
в System.IO.Compression.GZipStream.Dispose (логическое удаление)
в System.IO.Stream.Close ()
в System.IO.StreamWriter.Dispose (логическое удаление)
в System.IO.StreamWriter.Close ()
Кроме того, это не сетевой файл.
Есть идеи, что я здесь не так делаю?