我想弄清楚如何用 a 编写二进制文件FileStream
and BinaryWriter
,并在我写作时锁定文件以供读取。我特别不希望其他应用程序/进程能够在写入时读取它。
//code to declare ba as a byte array
//dpath is the path to the file
FileStream BinaryFile = new FileStream(dpath, FileMode.Create, FileAccess.Write);
BinaryWriter Writer = new BinaryWriter(BinaryFile);
Writer.Write(ba);
Writer.Close();
BinaryFile.Dispose();
现在的问题是文件在写入过程中可以被其他应用程序打开,这在我当前的应用程序中是不希望的。这FileStream
有一个锁定方法,但锁定的是写入而不是读取,所以这对我没有帮助。
您正在寻找第四个参数FileStream构造函数 http://msdn.microsoft.com/en-us/library/5h0z48dh.aspx.
public FileStream(
string path,
FileMode mode,
FileAccess access,
FileShare share
)
所以在你的情况下:
FileStream BinaryFile = new FileStream(dpath, FileMode.Create,
FileAccess.Write, FileShare.None);
文件共享 http://msdn.microsoft.com/en-us/library/system.io.fileshare.aspx-Enum:
包含用于控制访问其他 FileStream 类型的常量
对象可以具有相同的文件。
Members:
-
None, 拒绝共享当前文件。任何打开文件的请求(通过此进程或另一个进程)都将失败,直到文件关闭。
-
Read, 允许随后打开文件进行读取。如果未指定此标志,则任何打开文件进行读取的请求(通过此进程或另一个进程)都将失败,直到文件关闭为止。但是,即使指定了此标志,可能仍然需要额外的权限才能访问该文件。
-
Write, 允许随后打开文件进行写入。如果未指定此标志,则任何打开文件进行写入的请求(通过此进程或另一个进程)都将失败,直到文件关闭为止。但是,即使指定了此标志,可能仍然需要额外的权限才能访问该文件。
-
读写, 允许随后打开文件进行读取或写入。如果未指定此标志,则任何打开文件进行读取或写入的请求(通过此进程或另一个进程)都将失败,直到文件关闭为止。但是,即使指定了此标志,可能仍然需要额外的权限才能访问该文件。
-
Delete, 允许随后删除文件。
-
可继承, 使文件句柄可由子进程继承。 Win32 不直接支持这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)