【发布时间】:2017-08-07 08:20:37
【问题描述】:
我有每分钟写入文件的应用程序。有时(每 10 分钟 +-)我得到错误
磁盘空间不足
我的应用程序是一个 Windows 窗体应用程序。我在谷歌上阅读了很多文章,但没有给出任何解决方法。
例外:
抛出异常:mscorlib.dll 中的“System.IO.IOException”
我的代码:
try
{
FileStream stream = new FileStream(file, FileMode.CreateNew);
FileStream stream2 = new FileStream(file2, FileMode.CreateNew);
BinaryFormatter writer = new BinaryFormatter();
writer.Serialize(stream, GetProducts().Take(80000).ToList());
writer.Serialize(stream2, GetProducts().Skip(80000).ToList());
stream.Flush();
stream.Close();
stream2.Flush();
stream2.Close();
}
catch(Exception ex)
{
Debug.WriteLine($"FAIL to write: {i} - {ex.Message}");
}
我在磁盘上的总可用空间是 74GB。在上次运行程序之前,我进行了碎片整理。
我应该如何摆脱这个错误?
谢谢
EDIT2:堆栈跟踪
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.FileStream.FlushWrite(Boolean calledFromFinalizer)
at System.IO.FileStream.Dispose(Boolean disposing)
at System.IO.FileStream.Finalize()
【问题讨论】:
-
你想写多少?
-
你想写到什么位置?
-
如果您认为这是不应该发生的事情,您可以尝试实施 retry 策略。并且不要处理所有异常,有办法确定when there is no more space。
-
你能显示堆栈跟踪吗?
-
另外,您的 Temp 文件夹中有多少空间(配额)?我不确定 BinFormatter 是如何工作的,但它的一些亲属会产生临时文件。
标签: c# filestream diskspace