是否可以在运行的应用程序之外编辑文件而无需先关闭附加的FileStream?

时间:2014-03-28 15:20:58

标签: c# file-io filestream

我有一个Windows服务,它始终作为我的应用程序的一部分运行。该服务使用TextWriterTraceListener写入日志文件,以便以后在需要时更容易调试。

TraceListener使用FileStream个对象。我想在构造FileShare.ReadWrite时使用FileStream,我可以根据需要在Windows资源管理器中编辑此文件(编辑文件并保存/重命名文件/移动文件),但事实似乎并非如此。 FileShare上的MSDN文章指出:"即使指定了此标志,仍可能需要其他权限才能访问该文件,"但不清楚这些权限可能是什么。

截至目前,每当我尝试编辑该文件时,我都会遇到以下错误:"该进程无法访问该文件,因为该文件正由另一个进程使用。"

2 个答案:

答案 0 :(得分:1)

两个想法:

关于FileShare声明可能仍然需要额外的权限 - 这可能是在您的程序说它可以处理某人在文件打开时阅读或写入文件的情况下引用的,其他人可能仍需要必要的访问权限(如在ACL中)访问文件。

第二个想法是你遇到这种情况的原因可能是因为你试图打开文件的其他程序试图以独占模式打开它(即不是FileShare.ReadWrite。所以那个程序要求独家访问并且因为你打开它而不接收它(即使愿意分享)。

使用程序进行测试(或者在您知道自己设置要分享的标志的位置快速编写一个程序),可以在共享模式下打开以查看它是否有效。

答案 1 :(得分:0)

要重命名或删除该文件,必须使用FileShare.Delete打开该文件。如果在打开它时将其删除或重命名,您可能会发现该文件的后续操作将失败,并显示错误“文件已被删除或删除”。