zoukankan      html  css  js  c++  java
  • C# 如何判断指定文件是否正被其它程序使用

    C# 如何判断指定文件是否正被其它程序使用

    起因:项目中发现在操作文件时,系统经常抛出异常,表示文件正被其它程序占用。

    需求:为了事先判断,以确认指定的文件是否正被其它程序使用,需要方法进行判断。

    思路:在程序中,我们经常遇到读写文件的情况,而这个时候该文件可能被其他程序占用,那么怎么判断文件是否被占用,从而友好的提示用户呢?

    这里提供一个简单的办法,他就是尝试着去读该文件,如果失败,则说明文件被占用

    实现:

           /// <summary>
           /// 返回指示文件是否已被其它程序使用的布尔值
           /// </summary>
           /// <param name="fileFullName">文件的完全限定名,例如:“C:MyFile.txt”。</param>
           /// <returns>如果文件已被其它程序使用,则为 true;否则为 false。</returns>
           public static Boolean FileIsUsed(String fileFullName)
           {
               Boolean result = false;
               //判断文件是否存在,如果不存在,直接返回 false
               if (!System.IO.File.Exists(fileFullName))
               {
                   result = false;
               }//end: 如果文件不存在的处理逻辑
               else
               {//如果文件存在,则继续判断文件是否已被其它程序使用
                   //逻辑:尝试执行打开文件的操作,如果文件已经被其它程序使用,则打开失败,抛出异常,根据此类异常可以判断文件是否已被其它程序使用。
                   System.IO.FileStream fileStream = null;
                   try
                   {
                       fileStream = System.IO.File.Open(fileFullName, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite,System.IO.FileShare.None);
                       result = false;
                   }
                   catch (System.IO.IOException ioEx)
                   {
                       result = true;
                   }
                   catch (System.Exception ex)
                   {
                       result = true;
                   }
                   finally
                   {
                       if (fileStream != null)
                       {
                           fileStream.Close();
                       }
                   }
               }//end: 如果文件存在的处理逻辑
               //返回指示文件是否已被其它程序使用的值
               return result;
           }//end method FileIsUsed
  • 相关阅读:
    Get distinct count of rows in the DataSet
    单引号双引号的html转义符
    PETS Public English Test System
    Code 39 basics (39条形码原理)
    Index was outside the bounds of the array ,LocalReport.Render
    Thread was being aborted Errors
    Reportviewer Error: ASP.NET session has expired
    ReportDataSource 值不在预期的范围内
    .NET/FCL 2.0在Serialization方面的增强
    Perl像C一样强大,像awk、sed等脚本描述语言一样方便。
  • 原文地址:https://www.cnblogs.com/youguess/p/4647395.html
Copyright © 2011-2022 走看看