C井判斷文件是否被佔用的兩種方法
知識
07-22
第一種方法:採用文件流方式;打開進行讀取操作,看看是否可以;(親自嘗試,完全正確)
- public static bool IsFileInUse(string fileName)
- {
- bool inUse = true;
- FileStream fs = null;
- try
- {
- fs = new FileStream(fileName, FileMode.Open, FileAccess.Read,
- FileShare.None);
- inUse = false;
- }
- catch
- {
- }
- finally
- {
- if (fs != null)
- fs.Close();
- }
- return inUse;//true表示正在使用,false沒有使用
- }
第二種:
添加引用:kernel32.dll;32位動態鏈接庫文件
- using System.IO;
- using System.Runtime.InteropServices;
- [DllImport("kernel32.dll")]
- public static extern IntPtr _lopen(string lpPathName, int iReadWrite);
- [DllImport("kernel32.dll")]
- public static extern bool CloseHandle(IntPtr hObject);
- public const int OF_READWRITE = 2;
- public const int OF_SHARE_DENY_NONE = 0x40;
- public readonly IntPtr HFILE_ERROR = new IntPtr(-1);
- private void button1_Click(object sender, EventArgs e)
- {
- string vFileName = @"d: emp.bmp";
- if (!File.Exists(vFileName))
- {
- MessageBox.Show("文件都不存在!");
- return;
- }
- IntPtr vHandle = _lopen(vFileName, OF_READWRITE | OF_SHARE_DENY_NONE);
- if (vHandle == HFILE_ERROR)
- {
- MessageBox.Show("文件被佔用!");
- return;
- }
- CloseHandle(vHandle);
- MessageBox.Show("沒有被佔用!");
- }
個人更加傾向於第一種,少用引用,在部署的時候,就會少很多問題~~,上線時才能少些bug、小編比較粗心,由於項目中用的引用較多,所以部署的時候,總可能會丟引用,在生產環境下,就沒有達到預想的效果,不過也養成一個習慣,所有添加的引用都放到一個固定的文件夾中,每次部署前,先把這些dll複製到打包文件夾,就會方便許多、儘可能的少依賴於固定的軟體或者操作系統。


※打造Python的vim環境
※前端開發(HTML+CSS靜態部分)
TAG:程序員小新人學習 |