文件“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。使用完也必须关闭。