C#判断本地文件是否处于打开状态的方法
本文实例讲述了C#判断本地文件是否处于打开状态的方法。分享给大家供大家参考。具体分析如下:
对于应用程序,有时候可能需要判断某个文件是否已经被打开,也就是指是否被某个流连接着。这在对文件的读写比较频繁的程序中尤为重要,因为一个文件同一时刻只能有一个流连接的。下面的代码也许能有所帮助。
publicclassFileStatus { [DllImport("kernel32.dll")] privatestaticexternIntPtr_lopen(stringlpPathName,intiReadWrite); [DllImport("kernel32.dll")] privatestaticexternboolCloseHandle(IntPtrhObject); privateconstintOF_READWRITE=2; privateconstintOF_SHARE_DENY_NONE=0x40; privatestaticreadonlyIntPtrHFILE_ERROR=newIntPtr(-1); publicstaticintFileIsOpen(stringfileFullName) { if(!File.Exists(fileFullName)) { return-1; } IntPtrhandle=_lopen(fileFullName,OF_READWRITE|OF_SHARE_DENY_NONE); if(handle==HFILE_ERROR) { return1; } CloseHandle(handle); return0; } }
调用测试:
classProgram { staticvoidMain(string[]args) { stringtestFilePath=AppDomain.CurrentDomain.SetupInformation.ApplicationBase+@"testOpen.txt"; FileStreamfs=newFileStream(testFilePath,FileMode.OpenOrCreate,FileAccess.Read); BinaryReaderbr=newBinaryReader(fs); br.Read(); Console.WriteLine("文件被打开"); intresult=FileStatus.FileIsOpen(testFilePath); Console.WriteLine(result); br.Close(); Console.WriteLine("文件被关闭"); result=FileStatus.FileIsOpen(testFilePath); Console.WriteLine(result); Console.ReadLine(); } }
希望本文所述对大家的C#程序设计有所帮助。