C# 判断文件是否被占用的可以用下面的方法

先判断一下文件是否已经被打开了(占用),如果已经被打开了,就别再去打了,可以给出你自己的提示(或根据自己的需要进行其它的处理)。

   

       
       C# 判断文件是否被占用的可以用下面的方法
       
   

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
方法一:
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( "没有被占用!" );  
}

方法二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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没有使用  
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值