我有一個使用簡單日誌記錄過程的程序。這個想法是,每天都會創建一個與日期相對應的新文件,除非文件已經存在,在這種情況下,它只是附加到文件中。問題是,File.Create每次運行時都會拋出一個錯誤。我找到了解決這個問題的方法,說File.Create打開一個FileStream,你只需要用.close()來調用它。但是這個解決方案對我不起作用,我仍然得到IO異常說該文件正在被另一個進程使用,這是不可能的,因爲它在File.Create創建它之前不存在,並且沒有其他用途使用這些文件。
下面的代碼:File.Create拋出IOException
public static void logResults(System.Reflection.MethodBase method, Results result, string message)
{
string date = DateTime.Now.ToString();
int index = date.IndexOf(" ");
string subString = date.Substring(0, index);
string nwDate = Regex.Replace(subString, "/", "");
logFileName = "WebsiteRegressionProduction_TestCycle." + nwDate;
string currentLogFile = logFileLocation + @"\" + logFileName;
StringBuilder sb = new StringBuilder();
if (!File.Exists(currentLogFile))
{
File.Create(currentLogFile).Close();
sb.Append("DATE-TIME\tACTION\tTEST CLASS\tTEST NAME\tTEST STATUS\tERROR MESSAGES");
sb.Append("\n");
}
else
{
string previousLogs = File.ReadAllText(currentLogFile);
sb.Append(previousLogs);
}
sb.Append(DateTime.Now.ToString());
sb.Append(" : ");
sb.Append("Text Executed: ");
sb.Append(method.ReflectedType.Name + " : ");
sb.Append(method + " : ");
sb.Append(result.ToString());
sb.Append(" : ");
sb.Append(message);
sb.Append("\n");
sb.Append("\n");
File.WriteAllText(currentLogFile, sb.ToString());
我已經運行你的代碼,我看不到文件訪問的問題。發生異常的線是什麼? –
這發生在File.Create行。 File.Create(currentLogFile);或 File.Create(currentLogFile).Close(); 拋出: IOException被用戶代碼未處理 該進程無法訪問文件「」,因爲它正在被另一個進程使用 –
您確定currentLogFile路徑正確嗎?我有你的代碼,它應該工作得很好,只要路徑是有效的。異常方法是否提供更多信息? –