2017-07-01 25 views
0

我得到一個錯誤,當我運行這個NEWFILE方法:File.Move問題:進程無法訪問該文件例外

class logFile 
{ 
    public static string logpath = @"D:\Program Files\CustomApps\DataFeed\"; 

    public static void log(string log) 
    { 
     string timestamp = DateTime.Now.ToString("yyyy_MM_ddTHH_mm_ss"); 
     Console.WriteLine(timestamp + log); 
     File.AppendAllText(logpath + @"log_file_current.txt", timestamp + log + Environment.NewLine); 
    } 

    public static void newFile() 
    { 
     if (File.Exists(logpath + @"log_file_current.txt") == true) 
     { 
      File.Move(logpath + @"log_file_current.txt" 
        , logpath + @"log_files\log_file_ORPHANED_" + DateTime.Now.ToString("yyyy_MM_ddTHH_mm_ss") + ".txt"); 
     } 

     try 
     { 
      File.Create(logpath + @"log_file_current.txt"); 
      logFile.log("logFile created."); 
     } 
     catch(System.NotSupportedException ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
    } 
} 

我得到以下錯誤:

enter image description here

如果我註釋「newFile」代碼的正文,然後運行沒有錯誤,但後來我需要手動存檔。如果我註釋掉File.Move部分,它一切正常,所以這是罪魁禍首。

我該如何釋放文件才能移動文件?

+0

這顯然是一個文件鎖定問題,順便套管喲嘗試呼叫「日誌」和「NEWFILE」的方法。所以請解釋你想用「newFile」方法實現的目標。如果您需要歸檔屬於「上一次日期」的日誌,則需要有一種機制來檢查當前日期和上一次日期之間的差異。 –

+0

你正在處理很多與錯誤無關的東西。 Sooo ....謝謝? –

+0

但嚴重的是,downvote會怎樣?我做了自己的代碼,並明確了我的問題。這完全是爲了什麼。如果我知道c#我不會在這裏。 –

回答

2

您需要使用File.Close使用File.Create後,這就是爲什麼你得到一個錯誤說該文件是由另一個進程使用。嘗試添加此行的代碼:

try 
{ 
    File.Create(logpath + @"log_file_current.txt").Close(); // Notice the .Close() here 
    logFile.log("logFile created."); 
} 

來源:Closing a file after File.Create

+1

這可能會解決問題。您也可以在使用中包裝File.Create()。問題是File.Create()調用會在文件上創建一個鎖(它會返回一個FileStream),然後調用logFile.log來嘗試再次打開它。你可以在堆棧跟蹤中看到它。 –

+0

謝謝,這工作。這是我的第一個C#,所以我正在學習繩索。 –

+0

很高興能幫到你! – CBinet

0

試試這個

public static void log(string log) 
    { 
    string timestamp = DateTime.Now.ToString("yyyy_MM_ddTHH_mm_ss") + ": "; 
    Console.WriteLine(timestamp + log); 
    using (StreamWriter sw = File.AppendText(logpath + @"log_file_current.txt")) 
    { 
     sw.WriteLine(timestamp + log); 
    } 
    } 
+0

這不是錯誤的部分。正如我在帖子中所述,它是崩潰的File.Move部分。 –

相關問題