我使用StreamWriter来编写日志。我有时在程序运行时用Excel打开这个日志文件。 我发现Excel会锁定此文件,因此当我的程序尝试写入日志时,我会收到IOException。
我可以拿出其他进程设置的锁吗? 我知道我可以在程序运行时锁定文件,但是当我用Excel打开它时会导致类似的问题。 请注意,我不会在其他过程中写任何内容。
using(var sw = new StreamWriter(
new FileStream(filename, FileMode.Append, FileAccess.Write), Encoding.GetEncoding("UTF-16")))
答案 0 :(得分:3)
不,你不能取得锁定文件的所有权" (除非设计了其他应用程序以允许此类访问)。
其他应用程序必须打开具有特定共享模式的文件,以允许您同时访问该文件。
请注意,由于保持状态一致的问题,大多数应用程序都不会以此模式打开文件。
.Net指定共享模式的方式 - 在打开文件时使用FileShare枚举中的所需值。关于它有多个样本和讨论,如C# multiple instances of program reading from same file。