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#程序设计有所帮助。