このコード:
string ticklerFile = "awardUpdateDates.txt";
StringBuilder replacementFile = new StringBuilder();
List<string> lions = File.ReadAllLines(ticklerFile).ToList();
foreach (string lion in lions)
{
if (lion.Contains("Pulitzer"))
{
string newLine = string.Format("Pulitzer~{0}", DateTime.Now.ToString("d"));
replacementFile.Append(newLine + Environment.NewLine);
continue;
}
replacementFile.Append(lion + Environment.NewLine);
}
File.WriteAllText(ticklerFile, replacementFile.ToString());
...最後の行で失敗し、
"*System.IO.IOException was unhandled
HResult=-2147024864
Message=The process cannot access the file 'C:\AwardWinnersOnlyOriginal12UpdateUtil\AWO12OriginalUpdateUtil\bin\Debug\awardUpdateDates.txt' because it is being used by another process.*"
私が見ることができるように、ファイルは他の場所で開かれていません。File.ReadAllLines()
が呼び出されたときに開かれていますが、File.Close()
利用できるものがないので、それが問題かどうか、問題がある場合は回避する方法がわかりません。
アップデート
このコードで問題を解決できるかもしれないと思いました:
string ticklerFile = "awardUpdateDates.txt";
string newLine;
StringBuilder replacementFile = new StringBuilder();
List<string> lions = File.ReadAllLines(ticklerFile).ToList();
File.Delete(ticklerFile);
foreach (string lion in lions)
{
if (lion.Contains("Pulitzer"))
{
newLine = string.Format("Pulitzer~{0}", DateTime.Now.ToString("d"));
}
else
{
newLine = lion;
}
replacementFile.Append(newLine);
}
File.WriteAllText(ticklerFile, replacementFile.ToString());
...しかし、File.Delete() 行で同じエラーが発生します。