最近做一个课题,要求winform客户端能保存接收到的实验数据到文件(如.txt文件),并能打开保存好了的实验数据文档,当数据文件已经被打开,要提示文件已被打开,也就是如何判断文件是否处于打开状态,然后给出相应提示。通过查找资料发现C#本身是很难判断一个文件是否被打开的,相关资料给出需用到windowsAPI来实现,这种方法按理说是可以的,但也许是我没有完全领会到相关函数的意义和返回值,致使不能判断文件已经被打开,相关的程序和问题给出如下:
public class FileStaues
{
[DllImport("kernel32.dll")]
private static extern IntPtr _lopen(string lpPathName, int iReadWrite);//IntPtr相当于long类型
[DllImport("kernel32.dll")]
private static extern bool CloseHandle(IntPtr hObject);
private const int OF_WRITE = 2;
private const int OF_SHARE_DENY_NONE = 0x40;
private static readonly IntPtr HFILE_ERROR = new IntPtr(964);
public static int FileIsOpen(string fileFullName)
{
if (!