我偶然发现了一个不寻常的问题File.WriteAllLines.
我的代码看起来像这样
File.WriteAllLines(filename, data);
bool exists = File.Exists(filename);
Run Code Online (Sandbox Code Playgroud)
问题是,有时文件写入失败,但不会引发异常,并且代码认为文件存在时不存在.
Database.lock.lock扩展是否对操作系统有意义?Exists返回true,但文件根本就不存在.没有例外.Exists从单独的进程调用返回false.Process.Start(filename)导致错误(不是代码异常,只是操作系统说它无法找到文件).我该如何调试这里发生的事情?
按照David的建议,我使用procmon.exe观察了这个过程.
结果如下:http://i.imgur.com/IBz6Ujt.png
您会注意到有很多事情在重复进行,我并不完全理解,最后报告文件已成功写入.
感谢Patrick的建议,我发现由于我没有考虑到代码路径,该文件立即被删除在不同的代码段中.很抱歉浪费每个人的时间.我感到宽慰,虽然这只是我没有思想,而不是不可预见的网络问题.
这可能是权限问题。如果您没有文件的读取权限,File.Exists 将返回 false。可能是您正在运行代码来从 Visual Studio 创建文件,并且它具有管理员权限,而您正在使用没有对该位置的读取访问权限的其他权限运行 LINQPad。
| 归档时间: |
|
| 查看次数: |
1486 次 |
| 最近记录: |