FileStream:被另一个进程使用错误

问题描述 投票:0回答:3

我有两个不同的模块需要访问单个文件(其中一个具有读写访问权限,其他模块仅具有读取权限)。该文件是在其中一个模块中使用以下代码打开的:

FileStream fs1 = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.Read);

问题是第二个模块在尝试使用以下代码打开同一文件时失败:

FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read);

我需要在这里设置一些额外的安全参数吗?

c# .net file-io filestream
3个回答
36
投票

在仅读取文件的FileStream上,需要将其设置为

FileShare.ReadWrite

FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

否则,原来的FileStream将无法写回它......这只是两个流之间的来回齐射,确保你交回对方需要的东西。


1
投票

打开第二个

FileStream
时,还需要指定
FileShare.Read
,否则会尝试以独占访问方式打开它,并且会失败,因为文件已经打开了


0
投票

您需要使用filestreamname.Open();和 filestreamname.close();命令当使用 2 个文件流读取/写入同一文件时,因为您无法异步读取和写入文件。

© www.soinside.com 2019 - 2024. All rights reserved.