该进程无法访问文件,因为在打开文件运行时,其他进程正在使用该文件

时间:2017-05-29 11:26:56

标签: c#

我使用以下代码创建日志文件并在运行时附加文本。我在一段时间内打开日志文件。此应用程序显示错误:进程无法访问文件,因为它正被另一个进程使用。我想在运行时打开日志运行项目。如何修复错误? 感谢。

using (var stream = new FileStream(
       path, 
       FileMode.Open, 
       FileAccess.Read, 
       FileShare.ReadWrite))
{
    StreamWriter streamWriter = new StreamWriter(stream);
    streamWriter.Write(message);
    streamWriter.Close();
    stream.Close();
}

1 个答案:

答案 0 :(得分:0)

如果打开文件的进程已打开并且不允许共享,则您实际上无法获取该文件的内容。

如果操作系统配置为使用它,您可以使用VSS(Volume Snapshot Service又称卷影复制)来获取文件如何更早看的快照,但它不会是实时的 - 当前文件的最新视图。为此,您需要共享访问权限。我不知道VSS有多难。

但如果其他进程不允许共享该文件的打开,那么您唯一的选择就是在尝试访问该文件之前等待进程终止。

如果您的应用程序正在保存该文件,那么您可以通过允许通过您在问题代码中使用的相同文件访问掩码共享打开文件来更改它打开文件的方式。