我想打开同一个文件进行读取和写入。文件指针应该是独立的。因此读取操作不应移动写入位置,反之亦然。
目前,我正在使用此代码:
FileStream fileWrite = File.Open (path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read);
FileStream fileRead = File.Open (path, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read);
StreamWriter _Writer = new StreamWriter (fileWrite, new ASCIIEncoding ());
StreamReader _Reader = new StreamReader (fileRead, new ASCIIEncoding ());
但这会导致 IOException:“该进程无法访问该文件,因为该文件正在被另一个进程使用”
最佳答案
我想我自己就明白了。在第二个 File.Open
中,我们尝试通过指定 FileShare.Read
来拒绝其他应用程序的写入访问权限。相反,我们需要允许第一个流写入文件:
FileStream fileRead = File.Open (path, FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite);
这本质上是正确的,因为读取流不应该关心其他人写入文件。至少我不再遇到异常了。
关于c# - 如何打开文件进行独立读/写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1102400/