我有两个不同的模块需要访问单个文件(一个将具有ReadWrite Access - Other only Read)。在其中一个模块中使用以下代码打开该文件:
FileStream fs1 = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.Read);
问题是第二个模块在尝试使用以下代码打开同一文件时失败:
FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read);
我是否需要在此设置一些额外的安全参数?
答案 0 :(得分:26)
在仅读取文件的FileStream上,您需要将其设置为
FileShare.ReadWrite
FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
另外,原来的FileStream无法回写它...它只是在两个流之间来回滚动,确保你回复其他需要的东西
答案 1 :(得分:0)
你需要使用filestreamname.Open();和filestreamname.close();使用2个读/写同一文件的文件流时的命令,因为您无法异步读写文件。
答案 2 :(得分:0)
打开第二个FileStream
时,您还需要指定FileShare.Read
,否则会尝试使用独占访问权限打开它,并且因为文件已经打开而失败