【问题标题】:.NET GZipStream, and out of disk space exception.NET GZipStream 和磁盘空间不足异常
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

  • 是的,正如我所提到的,发生这种情况时,机器有很多可用的磁盘空间。另外,用户配额没有用完。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 2013-10-09
    • 2015-12-04
    • 2015-12-30
    • 1970-01-01
    • 2018-01-30
    相关资源
    最近更新 更多