尝试通过StreamWriter打开和写入文件时,我可以取得锁的所有权吗?

时间:2015-05-29 05:20:42

标签: c# streamwriter

我使用StreamWriter来编写日志。我有时在程序运行时用Excel打开这个日志文件。 我发现Excel会锁定此文件,因此当我的程序尝试写入日志时,我会收到IOException。

我可以拿出其他进程设置的锁吗? 我知道我可以在程序运行时锁定文件,但是当我用Excel打开它时会导致类似的问题。 请注意,我不会在其他过程中写任何内容。

        using(var sw = new StreamWriter(
            new FileStream(filename, FileMode.Append, FileAccess.Write), Encoding.GetEncoding("UTF-16")))

1 个答案:

答案 0 :(得分:3)

不,你不能取得锁定文件的所有权" (除非设计了其他应用程序以允许此类访问)。

其他应用程序必须打开具有特定共享模式的文件,以允许您同时访问该文件。

请注意,由于保持状态一致的问题,大多数应用程序都不会以此模式打开文件。

.Net指定共享模式的方式 - 在打开文件时使用FileShare枚举中的所需值。关于它有多个样本和讨论,如C# multiple instances of program reading from same file