0

このコード:

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() 行で同じエラーが発生します。

4

0 に答える 0