我的程序正在將數據記錄到文件中,同時用戶界面實時顯示傳入數據。如果計算機/程序/ os /關閉,我希望記錄的數據在一秒鐘或兩秒鐘內在磁盤上。數據至少每秒100次。重命名自己打開文件
我希望用戶能夠在日誌記錄處於活動狀態時爲日誌文件提供新名稱。問題在於,即使它是通過相同的進程打開,我也無法更改文件的名稱。
測試用例:
string fileName1 = "test.txt";
string fileName2 = "test2.txt";
using (StreamWriter sw = new StreamWriter(new FileStream(fileName1, FileMode.Create)))
{
sw.WriteLine("before");
File.Move(fileName1, fileName2); //<<-- IOException - The process cannot access the file because it is being used by another process.
w.WriteLine("after");
}
所以,如何從一個過程,而同樣的過程中具有數據流來打開文件重命名文件?
如果你記錄如此多的數據,你真的應該嘗試一個日誌庫,像log4net的(HTTP ://logging.apache.org/log4net/)。 –
不幸的是,當你使用它的流時,你不能移動文件或改變它的名字,甚至刪除它,就好像它被另一個程序使用一樣... –