【发布时间】:2010-02-05 00:09:34
【问题描述】:
我正在使用以下代码写入我每次创建新的压缩文件。
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。但是,我正在写入文件的驱动器上有 19GB 的可用空间。
根据 GZipStream 的文档,它不能用于写入大于 4GB 的文件。但是,写到现在的文件只有250MB大小。
这是一个例外:
类型:System.IO.IOException 异常信息:磁盘空间不足。
内部异常: StackTrace:在 System.IO.__Error.WinIOError(Int32 错误代码,字符串可能全路径) 在 System.IO.FileStream.WriteCore(字节 [] 缓冲区,Int32 偏移量,Int32 计数) 在 System.IO.FileStream.FlushWrite(布尔调用FromFinalizer) 在 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()
另外,这不是网络文件。
有什么想法我在这里做错了吗?
【问题讨论】:
-
“在我正在写入文件的驱动器上”:它是本地驱动器还是网络驱动器?
-
也许你应该显示一些额外的代码。这三个 using 语句本身看起来不会引起问题。还有什么是异常堆栈跟踪?
标签: .net gzip gzipstream