C# 偵測資料夾內檔案狀態是否被鎖定(或是可用)
參考來源:https://stackoverflow.com/questions/876473/is-there-a-way-to-check-if-a-file-is-in-use
因為常常會用到,所以先收集起來,註解改用中文
記得要 using System.IO;
這個 isFileLocked 如下:
因為常常會用到,所以先收集起來,註解改用中文
記得要 using System.IO;
DirectoryInfo directoryInfo = new DirectoryInfo(sourcePath);
foreach(FileInfo fi in directoryInfo.GetFiles())
{
if (!isFileLocked(fi) && fi.Length > 0)
{
// ...繼續處理可用檔案
}
}
這個 isFileLocked 如下:
protected virtual bool IsFileLocked(FileInfo file)
{
FileStream stream = null;
try
{
stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None);
}
catch (IOException)
{
//檔案無法開啟可能原因:
// 檔案仍然被寫入狀態
// 被其他Thread程序使用中
// 已經不存在 (或被程序處理掉了)
return true;
}
finally
{
//如果已經被開啟不管狀態為何,記得要關閉資源
if (stream != null)
stream.Close();
}
//可以被開啟,回報檔案未被鎖定
return false;
}
留言