C#读取被进程占用的文件

来源:互联网 发布:网络诈骗套路 编辑:程序博客网 时间:2024/05/01 01:26

文件“D:\demo222\demo\chnlmangr\listener.tar”正由另一进程使用,因此该进程无法访问该文件。

在代码中对“listener.tar”文件做解压操作,在执行完后也做了关闭操作,但不关闭程序再次执行解压操作就提示

该文件已被其他程序占用问题。

开始使用代码:

FileStream fr = File.OpenRead(strFilePath);

//do something ……

fr.Close();

 

测试了多种情况:

1、 FileStream fr = File.OpenRead(strFilePath);
StreamReader sr = new StreamReader((System.IO.Stream)fr, System.Text.Encoding.Default);

错误提示:文件“D:\demo222\demo\chnlmangr\listener.tar”正由另一进程使用,因此该进程无法访问该文件。

 

2、StreamReader sr = File.OpenText(strFilePath);

错误提示:文件“D:\demo222\demo\chnlmangr\listener.tar”正由另一进程使用,因此该进程无法访问该文件。

 

3、 FileStream fr = new FileStream(strFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader sr = new StreamReader(fr, System.Text.Encoding.Default);

正确读取。

 

总结:

这样的情况,不单要用只读方式打开文件,而且需要共享锁。还必须选择flieShare方式为ReadWrite。使用完也必须关闭。

原创粉丝点击