C# 如何判断一个文件是否被占用

2025-09-24 07:26:55

1、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 = @"c:\temp\temp.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("没有被占用!");

}

2、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没有使用

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢