可能重复:
Open file ReadOnly
在我的应用程序中,我使用Debug.WriteLine()向Log.txt写了一些信息,我想提供一个显示Log.txt内容的表单。
但是当我尝试打开文件Log.txt时,我得到一个例外:
该进程无法访问文件'F:\ Rajeev \ 10-11-2012 \ Temp \ Temp \ bin \ Debug \ Log.txt',因为它正由另一个进程使用。
我如何克服这个问题?
另外一个问题是,我可以使用记事本打开同一个文件。那为什么我不能用我的应用程序打开同一个文件呢?
以下是我用于指定日志文件的代码:
TextWriterTraceListener tr = new TextWriterTraceListener(System.IO.File.CreateText("Log.txt"));
Debug.Listeners.Add(tr);
Debug.AutoFlush = true;
以下是我用于写入日志文件的代码:
Debug.WriteLine("ERROR: Invalid Username " + s);
以下是我用于打开日志文件(已由“Debug”打开)以在日志查看器中显示的代码(我的应用程序中的“表单”):
File.Open(LogFilePath, FileMode.Open, FileAccess.Read,FileShare.Read);
答案 0 :(得分:3)
这取决于打开文件的权限。如果程序以任何类型的独占模式打开文件,则其他程序将具有有限的访问权限或无权访问。
因此,您可以确保不要尝试专门打开文件(您没有显示您的代码)。但是,如果您没有其他程序的源代码,那么您只能希望该程序不会独占打开该文件。否则,除非终止其他程序,否则我不知道你能做些什么。
修改
以下代码:
File.Open(LogFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
说其他文件也可以读取打开的文件,但我相信它们无法写入。因此,如果其他程序正在写入该文件,则不允许这样做。您可以尝试使用FileShare.ReadWrite
,但如果您有其他程序的来源,我仍然没有看到您指示的位置。我错过了吗?