以Notepad.exe的方式打开文件的标志是什么?

Hum*_*rto 5 c# file-io

我正在编写一个C#应用程序来读取另一个应用程序保持打开的文件.正如你们中的一些人可能猜到的那样,我得到的只是IOExceptions,因为"该文件正由另一个进程使用".我试过调整一下File.Open(); 这是我目前的尝试:

FileStream fsIn = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
Run Code Online (Sandbox Code Playgroud)

(我知道,文件共享标志是其他进程更有意义随后访问该文件,但我已经用也无妨尝试.)

令我困惑的是Notepad.exe会打开文件就好了.在我深入了解Filemon以获取更多线索之前,您是否知道如何以记事本的方式打开文件?谢谢.

Mic*_*tta 5

你几乎拥有它.你真的想要FileShare.ReadWrite:

FileStream fsIn = File.Open(fileName,
                            FileMode.Open,
                            FileAccess.Read,
                            FileShare.ReadWrite);
Run Code Online (Sandbox Code Playgroud)

FileShare.Read禁止其他进程写入该文件. FileShare.ReadWrite允许这个.

允许随后打开文件进行写入.如果未指定此标志,则在文件关闭之前,任何打开文件以进行写入(通过此进程或其他进程)的请求都将失败.但是,即使指定了此标志,仍可能需要其他权限才能访问该文件.

ReadWrite允许随后打开文件进行读写.如果未指定此标志,则在文件关闭之前,任何打开文件以进行读取或写入(通过此进程或其他进程)的请求都将失败.但是,即使指定了此标志,仍可能需要其他权限才能访问该文件.

这也是我的倒退.