紧跟File.WriteAllLines()后面的File.ReadAllLines()会因锁定而导致异常

时间:2015-08-11 19:14:46

标签: c#

在我的程序中,我有一大堆代码

File.ReadAllLines()

虽然这起初工作正常,但最近它给了我一个例外,因为该文件被其他进程使用~90%的时间。这对我来说没有任何意义,因为System.Threading.Thread.Sleep(3000)应该在阅读后关闭文件。我在File.WriteAllLines()之前添加了File.ReadAllLines(),这使我的成功率提高到了约50%。真的是我的唯一选择吗?我找不到人们与{{1}}有类似问题的任何来源。

任何建议,解释或实际修复都会有所帮助。我无能为力,但我觉得自己错过了什么。

编辑:用实际代码编辑我的if语句,这很重要

编辑:我正在读取并将文件写入网络共享,而不是本地计算机。

编辑:它似乎不是我的应用程序的任何类型挂起的文件,并且从我在this问题中使用FileUtil类可以告诉我,它是我的应用程序有锁定文件。

1 个答案:

答案 0 :(得分:0)

我已经弄清楚问题是什么。在此代码到达之前,有一些较旧的&#34;遗产&#34;快速读取文件的代码现在是一个过时的原因。我们所拥有的许多遗留代码都非常草率地使用了流,我最近一直在回过头来清理它并在任何地方使用它时实现正确的public class DateFormatterProvider { private final Map<Locale, DateTimeFormatter> formatterMap = new HashMap<>(); public DateFormatterProvider() { formatterMap.put(Locale.US, DateTimeFormat.forPattern("dd/MM/yyyy")); formatterMap.put(Locale.FRENCH, DateTimeFormat.forPattern("MM/dd/yyyy")); // etc. } } 语法。显然我错过了一个地方,并且有一个从未被处理过的旧using()。感谢大家的评论,在这个过程中学到了一些东西。