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

时间:2026-02-12 00:24:51

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

}

© 2026 长短途
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com