我開發了一個filewatcher程序來監視文件夾,如果文件發生任何更改,它會將該文件複製到另一個文件夾。如何在System.IO.File.Copy期間避免Filewatcher鎖定文件
但是,我發現寫入原始文件時會出現錯誤信息(例如,文件正在被另一個應用程序執行......),似乎該文件在運行[System.IO.File.Copy]複製到另一個時被鎖定夾。
是否有解決方案可以避免filewatcher/System.IO.File.Copy鎖定的原始文件?謝謝。
下面是我的代碼:
private void fileWatcher_Changed(object sender, System.IO.FileSystemEventArgs e)
{
DateTime lastWriteTime = File.GetLastWriteTime(e.FullPath);
if (lastWriteTime != lastRead)
{
txtLog.Text += e.ChangeType + ": " + e.FullPath + "\r\n";
txtLog.Focus();
txtLog.Select(txtLog.TextLength, 0);
txtLog.ScrollToCaret();
try
{
string myPath = e.FullPath;
string myFile = e.Name;
System.IO.FileInfo myFileInfo = new System.IO.FileInfo(myFile);
string myAttibs = myFileInfo.Attributes.ToString();
System.IO.File.Copy(myPath, @"D:\\Folder\\Output\\" + myFile, true);
lastRead = lastWriteTime;
}
catch (System.IO.IOException ex)
{
System.IO.IOException myex = ex;
}
catch (System.Exception ex)
{
System.Exception myex = ex;
}
}
}
我認爲捕捉異常是最好的,你可以做的。 –
哎呀。你真的想寫一個文件中間副本嗎?問問你自己爲什麼要把這個文件從文件夾複製到文件夾,看看你是否可以重新訪問你的設計。 – RavB