/// <summary>
        /// 文件是否被占用
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        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 (Exception ex)
            {
                Console.WriteLine(ex);
                inUse = false;
            }
            finally
            {
                if (fs != null)

                    fs.Close();
            }
            return inUse;//true表示正在使用,false没有使用
        }

这个能解除占用问题

private const int OF_READWRITE = 2;
        private const int OF_SHARE_DENY_NONE = 0x40;
        private static readonly IntPtr HFILE_ERROR = new IntPtr(-1);
        /// <summary>
        /// 关闭文件句柄
        /// </summary>
        /// <param name="hObject"></param>
        /// <returns></returns>
        [DllImport("kernel32.dll")]
        private static extern bool CloseHandle(IntPtr hObject);
        /// <summary>
        /// 判断文件是否打开
        /// </summary>
        /// <param name="lpPathName">文件名称</param>
        /// <param name="iReadWrite"></param>
        /// <returns></returns>
        [DllImport("kernel32.dll")]
        private static extern IntPtr _lopen(string lpPathName, int iReadWrite);
        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
            {
                IntPtr vHandle = _lopen(fileName, OF_READWRITE | OF_SHARE_DENY_NONE);
                CloseHandle(vHandle);
            }
            finally
            {
                if (fs != null)
                    fs.Close();
            }
            return inUse;//true表示正在使用,false没有使用  
        }

C# 判断文件是否被占用的更多相关文章

  1. C# 判断文件有没占用

    C# 判断文件有没占用 using System; using System.Collections.Generic; using System.Text; using System.Runtime. ...

  2. 使用c#检测文件正在被那个进程占用 判断文件是否被占用的两种方法

    C# 判断文件是否被占用的三种方法 using System.IO; using System.Runtime.InteropServices; [DllImport("kernel32.d ...

  3. renameTo()判断文件是否被占用(判断大文件是否完成拷贝这个动作)

    在开发需求中有一个需求是监控目录下拷贝进来的文件,并对文件进行处理, 使用的java.nio  . watchService 进行的处理,如果小文件还好一点,拷贝就是一瞬间的事情,但是如果是一个大文件 ...

  4. [C#.Net]判断文件是否被占用的两种方法

    今天开发产线测试Tool时发现日志文件会几率性的被占用,上网浏览找到最简单的代码(API或者FileStream),在这里抛砖引玉下. 第一种方法:API using System.IO; using ...

  5. 如何用Python判断一个文件是否被占用?

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 今天有同学问,用os模块的access()能否判断一个文件是否被占用?直觉上,这是行不通的,因为ac ...

  6. C#判断文件是否正在被使用

    生成文件的时候,如果该文件夹下的同名文件被打开(或者被使用),如果这时再生成一个同名文件,则会提示文件正在被占用. 解决方法有两个,一个是保存的文件名改成该文件夹下不存在的(随机数之类的XXOO都行, ...

  7. C语言中如何判断文件是否存在

    方法一:access函数判断文件夹或者文件是否存在 函数原型: int access(const char *filename, int mode); 所属头文件:io.h filename:可以填写 ...

  8. JavaScript根据文件名判断文件类型

    //JavaScript根据文件名判断文件类型 var imgExt = new Array(".png",".jpg",".jpeg",& ...

  9. PHP判断文件或者目录是否可写

    在PHP中,可用is_writable()函数来判断一个 文件/目录 是否可写,详情如下: 参考 is_writable (PHP 4, PHP 5) is_writable — 判断给定的文件名是否 ...

  10. python os 命令,及判断文件夹是否存在

    使用前 import os导入模块   os模块: os.sep     可以取代操作系统特定的路径分割符 os.linesep  字符串给出当前平台使用的行终止符.例如,Windows使用'\r\n ...

随机推荐

  1. leetcode每日一题:图中的最长环

    题目 2360. 图中的最长环 给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,其中每个节点 至多 有一条出边. 图用一个大小为 n 下标从 0 开始的数组 edges 表示,节点 ...

  2. 面试题:Linux 系统基础 (二)

    Linux系统中的定时任务有哪些类型,它们是如何配置的? Linux系统中的定时任务主要有两种类型:Cron作业和at作业. 1.Cron作业: 使用crontab命令配置和管理. 配置周期性执行的任 ...

  3. Win10怀旧--win7体验

    右键菜单变窄(1903以后失效) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\FlightedFeatures Immer ...

  4. 自动驾驶 | 为CarLA添加一辆小米SU7 Part I

    自动驾驶 | 为CarLA添加一辆小米SU7 Part I 导言 什么是CarLA? CarLA是一款基于虚幻引擎4(Unreal Engine 4)构建的开源自动驾驶仿真平台,为自动驾驶算法的研发. ...

  5. 为什么 Java 新生代被划分为 S0、S1 和 Eden 区?

    为什么 Java 新生代被划分为 S0.S1 和 Eden 区? 在 Java 的 垃圾回收(GC)机制中,新生代 被进一步划分为 Eden 区 和两个 Survivor 区(S0 和 S1).这种划 ...

  6. 容器原理之cgroup

    " 以 docker 为代表,轻量.便携的 container 使得打包和发布应用非常容易.系列文章容器原理主要分析 container 用到的核心技术,主要包括 Linux namespa ...

  7. PHP 实现微信异步回调数据打印知识分享

    一.引言 在微信支付.微信公众号消息推送等场景中,微信服务器会通过异步回调的方式将处理结果发送给我们的服务器.为了便于调试和监控,我们需要获取并打印这些回调数据.本文将详细介绍如何使用 PHP 的 f ...

  8. Web前端入门第 44 问:CSS 循环动画 animation 效果演示

    相关属性 @keyframes 定义动画的关键帧序列 animation-name 指定 @keyframes 动画的名称 animation-duration 动画单次循环的持续时间(必需属性,否则 ...

  9. K8s新手系列之初始Deployment资源

    概述 官网:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/ Deployment简称deploy ...

  10. 【安装】Ubuntu 20.04下快速安装ROS2 Foxy

    参考博客 ROS2安装 有的地方原博主打错了,还没改过来,我按我自己的改好了. 有的地方比如github和raw.githubusercontent.com访问不了,我替换成能用的镜像源了,只求一键复 ...