How does one use FileStream to append to a file without an exclusive lock?

15,995

See this question: C# file read/write fileshare doesn’t appear to work

In short, your freader has to specify FileShare.Write to allow for the fact that there is already a writer on the file.

Share:
15,995
Neil C. Obremski
Author by

Neil C. Obremski

Ribbit

Updated on July 26, 2022

Comments

  • Neil C. Obremski
    Neil C. Obremski almost 2 years

    What I'm trying to do with FileStream in C#/.NET is to open two streams: one appending to a file and the other reading those writes asynchronously (for unit testing some network connection handling code). I can't figure out how to get the writer stream to open the file in non-exlusive locking mode and thus the code always throws an exception:

    The process cannot access the file 'C:\test.txt' because it is being used by another process.

    Here's a smattering of code which demonstrates the issue:

    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);
    
  • Neil C. Obremski
    Neil C. Obremski over 15 years
    Yeah, if I could only figure out how to get a MemoryStream to act more like a connection. Of course I'm still having just as much trouble with FileStream so I may ask another question to that effect.