【问题标题】:How does one use FileStream to append to a file without an exclusive lock?如何使用 FileStream 在没有排他锁的情况下附加到文件?
【发布时间】:2010-09-16 09:32:07
【问题描述】:

我试图在 C#/.NET 中对 FileStream 执行的操作是打开两个流:一个附加到文件,另一个异步读取这些写入(用于对某些网络连接处理代码进行单元测试)。我不知道如何让 writer 流以非独占锁定模式打开文件,因此代码总是抛出异常:

进程无法访问文件 'C:\test.txt' 因为它正在被使用 由另一个进程。

这里有一小段代码可以证明这个问题:

FileStream fwriter = new FileStream("C:\\test.txt", FileMode.Append,
    FileAccess.Write, FileShare.Read);
FileStream freader = new FileStream("C:\\test.txt", FileMode.Open,
    FileAccess.Read, FileShare.Read);

【问题讨论】:

    标签: c# .net file stream filestream


    【解决方案1】:

    我不确定它是否有帮助,但是如果您只是进行单元测试,那么使用内存流而不是文件会更容易吗?

    【讨论】:

    • 是的,如果我能弄清楚如何让 MemoryStream 更像是一个连接。当然,我在使用 FileStream 时仍然遇到同样多的问题,所以我可能会就此提出另一个问题。
    【解决方案2】:

    看到这个问题:C# file read/write fileshare doesn’t appear to work

    简而言之,您的 freader 必须指定 FileShare.Write 以允许文件上已经有一个 writer。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2021-02-22
      • 1970-01-01
      • 2011-09-25
      • 2022-10-07
      • 2017-09-01
      • 2013-03-04
      相关资源
      最近更新 更多