如何打开文件进行独立读/写?

时间:2009-07-09 07:44:32

标签: c# file-io

我想打开同一个文件进行阅读和写作。文件指针应该是独立的。因此,读操作不应移动写位置,反之亦然。

目前,我正在使用此代码:

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:“进程无法访问该文件,因为它正由另一个进程使用”

2 个答案:

答案 0 :(得分:4)

我想我自己已经弄清楚了。在第二个File.Open中,我们通过指定FileShare.Read来尝试拒绝其他应用程序写入权限。相反,我们需要允许第一个流写入文件:

FileStream fileRead = File.Open (path, FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite);

这本身就是正确的,因为阅读流不应该关心其他人写文件。至少我不再有例外了。

答案 1 :(得分:1)

我手头没有C#,所以我无法测试它。

你不能只使用FileAccess.ReadWrite而不是FileAccess.Read吗?

编辑:答案是否定的。您需要使用FileShare来执行此操作。