【问题标题】:Does reading from file currently open by another process stops its writes?从另一个进程当前打开的文件中读取是否会停止其写入?
【发布时间】:2014-05-02 14:43:44
【问题描述】:

假设我有一个进程X,下面的代码打开了一些file,当前也被另一个进程Y使用。进程 Y 正在大量向file 写入新行。

using (var file = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var reader = new StreamReader(file))
{
    string line = null;
    while ((line = reader.ReadLine()) != null)
    {
        // do something with line
    }
}

我想知道来自X 的读取如何影响来自Y 的写入?在进程X 中打开文件(在使用范围内)时会被阻止写入吗?更准确地说,这是关于 Windows 上的 .NET 4.5。

【问题讨论】:

  • X 还能打开文件吗?
  • @Brandon,多亏了File.Open 提供的标志,如果Y 以正确的方式打开它。但这行得通。
  • 我想您会发现这取决于您是否在流式传输以及何时刷新缓冲区。
  • 您已经编写了代码......有什么东西阻止您测试这个吗?你试过了吗,你有问题吗?有什么问题?
  • 请记住,如果读取器 X 读取的数据超出了写入器 Y 实际写入(刷新)到共享的最后一个数据,它将获得 EOF 条件文件。这意味着您可能需要休眠并重试读取,或者使用其他机制来同步读取和写入操作。

标签: c# .net windows file


【解决方案1】:

我一直同时读取和写入文件并且没有遇到问题......当然有办法搞砸它,这就是为什么如果它不适合你,你应该包括你的特定问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多