.NET GZipStream,以及磁盘空间异常

时间:2010-02-05 00:09:35

标签: .net gzip gzipstream

我使用以下代码写入每次创建新的压缩文件。

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 errorCode,String maybeFullPath)    在System.IO.FileStream.WriteCore(Byte []缓冲区,Int32偏移量,Int32计数)    在System.IO.FileStream.FlushWrite(Boolean calledFromFinalizer)    在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()

此外,这不是网络文件。

我在这里做错了什么想法?

2 个答案:

答案 0 :(得分:0)

如果已达到分配给用户的磁盘配额,则会显示此消息。

管理员可以通过右键单击“我的电脑”中的磁盘,选择“属性”,然后使用“配额”选项卡来设置每用户配额。

验证配额是否已禁用或您的应用程序正在运行的用户是否具有足够的配额。

答案 1 :(得分:0)

将FileShare模式更改为独占模式以查看是否有所不同,我不明白为什么FileShare设置为读/写?对此有任何解释,压缩时,该文件应该是gzip正常工作的专用...

希望这有帮助, 最好的祝福, 汤姆。