【问题标题】:The process cannot access file because it is being used by another process when opening file runtime该进程无法访问文件,因为在打开文件运行时它正被另一个进程使用
【发布时间】:2017-05-29 11:26:56
【问题描述】:

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

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

【问题讨论】:

  • 如果它被另一个进程使用,检查它是你的进程还是其他人......
  • 我想在运行时用单词打开它。对不起我的英语!
  • 据我所知,您不能通过 2 个或多个不同的进程访问同一个文件。
  • @SarangK:除非以只读模式打开文件就足够了。只有一个进程可以写;但可以读取多个进程。

标签: c#


【解决方案1】:

如果打开文件的进程已经打开它并且不允许共享,那么你确实没有适当的方法来获取该文件的内容。

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

但如果其他进程不允许共享打开该文件,您唯一的选择是等待进程终止,然后再尝试访问该文件。

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

【讨论】:

    猜你喜欢
    • 2010-12-10
    相关资源
    最近更新 更多