我试图找出如何写一个二进制文件与FileStream和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();
Run Code Online (Sandbox Code Playgroud)
现在问题是在写入期间其他应用程序可以打开文件,这在我当前的应用程序中是不可取的.在FileStream有锁的方法,但锁住写,而不是阅读,这样就不会帮我.
Bob*_*bby 23
您正在寻找构造函数的第四个参数FileStream.
public FileStream(
string path,
FileMode mode,
FileAccess access,
FileShare share
)
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下:
FileStream BinaryFile = new FileStream(dpath, FileMode.Create,
FileAccess.Write, FileShare.None);
Run Code Online (Sandbox Code Playgroud)
FileShare -Enum:
包含用于控制其他FileStream对象可以拥有到同一文件的访问类型的常量.
成员:
- 无,拒绝共享当前文件.在文件关闭之前,任何打开文件的请求(通过此进程或其他进程)都将失败.
- 读取,允许随后打开文件进行读取.如果未指定此标志,则在文件关闭之前,任何打开文件以供读取(通过此进程或其他进程)的请求都将失败.但是,即使指定了此标志,仍可能需要其他权限才能访问该文件.
- 写入,允许随后打开文件进行写入.如果未指定此标志,则在文件关闭之前,任何打开文件以进行写入(通过此进程或其他进程)的请求都将失败.但是,即使指定了此标志,仍可能需要其他权限才能访问该文件.
- ReadWrite,允许随后打开文件进行读写.如果未指定此标志,则在文件关闭之前,任何打开文件以进行读取或写入(通过此进程或其他进程)的请求都将失败.但是,即使指定了此标志,仍可能需要其他权限才能访问该文件.
- 删除,允许后续删除文件.
- 可继承,使子进程可以继承文件句柄.Win32不直接支持此功能.
| 归档时间: |
|
| 查看次数: |
4434 次 |
| 最近记录: |