我有下面的代碼,它使用計時器爲我移動文件(每10分鐘200個文件被移動或保存在我的設置窗體中)。如何檢查文件是否打開/寫入C#
問題是文件在被打開和寫入時會被移動,我知道我必須在程序中「打開」它並檢查異常,但我無法弄清楚我的代碼中應該放置哪些位置它?
try
{
string origDir = @"" + Properties.Settings.Default.MoveFrom;
string destDir = @"" + Properties.Settings.Default.MoveTo;
string oldDir = @"" + Properties.Settings.Default.MoveToOld;
int filesPerMove = Properties.Settings.Default.FilesPerMove;
int i = 0;
DateTime dateMove= DateTime.Now;
DirectoryInfo dirInfo = new DirectoryInfo(origDir);
FileInfo[] files = dirInfo.GetFiles("*.txt");
foreach (string file in Directory.GetFiles(origDir))
if (new FileInfo(file).Length > 0)
{
if (i < filesPerMove)
{
ListViewItem lviSuccess = new ListViewItem(origFile.Name);
lviSuccess.SubItems.Add(origFile.LastWriteTime.ToString());
lviSuccess.SubItems.Add(dateMove.ToString());
lviSuccess.SubItems.Add(origFile.Length.ToString());
lviSuccess.SubItems.Add(origDir.ToString());
lviSuccess.SubItems.Add(destDir.ToString());
lvFileMoves.Items.Add(lviSuccess);
lviSuccess.UseItemStyleForSubItems = true;
lviSuccess.ForeColor = Color.Green;
FileInfo destFile = new FileInfo(file.Replace(origDir, destDir));
FileInfo destFile1 = new FileInfo(file.Replace(origDir, oldDir));
System.IO.File.Copy(origFile.FullName, destFile1.FullName, true);
System.IO.File.Copy(origFile.FullName, destFile.FullName, true);
File.Delete(origFile.FullName);
i++;
}
}
}
catch (System.IO.IOException ex)
{
ListViewItem lvi = new ListViewItem(ex.Message);
lvFileMoves.Items.Add(lvi);
lvi.UseItemStyleForSubItems = true;
lvi.ForeColor = Color.Red;
}
,你可以嘗試使用FileInfo的陣列後catch塊。 –
嗨你能舉一些例子嗎? – user1538062