C# 清除C中锁定日志文件的内容#

C# 清除C中锁定日志文件的内容#,c#,powershell,locked-files,C#,Powershell,Locked Files,关于如何清空日志文件,有很多解释 比如: 但是这个例子和我发现的其他例子都有同样的问题。如果日志文件当前被另一个进程锁定,则它不起作用 在ruby中,有一个任务我可以使用rake log:clear,它不会删除,只是清空日志文件 我还发现,我可以使用Powershell使用clc实现这一点。 现在可以在这里找到这些来源: 但老实说,我不明白这段代码是如何工作的,它也是从其他类继承的 是否有一个C#实现可供我在任何公共程序/类中使用?结果表明,在我的情况下,可以使用以下代码片段清除该文件:

关于如何清空日志文件,有很多解释

比如:

但是这个例子和我发现的其他例子都有同样的问题。如果日志文件当前被另一个进程锁定,则它不起作用

在ruby中,有一个任务我可以使用
rake log:clear
,它不会删除,只是清空日志文件

我还发现,我可以使用Powershell使用
clc
实现这一点。 现在可以在这里找到这些来源:

但老实说,我不明白这段代码是如何工作的,它也是从其他类继承的


是否有一个C#实现可供我在任何公共程序/类中使用?

结果表明,在我的情况下,可以使用以下代码片段清除该文件:

  var stream = new FileStream(FileName, FileMode.Truncate, FileAccess.ReadWrite, FileShare.ReadWrite | FileShare.Delete);
  stream.Close();

事实证明,在我的情况下,可以使用以下代码段清除该文件:

  var stream = new FileStream(FileName, FileMode.Truncate, FileAccess.ReadWrite, FileShare.ReadWrite | FileShare.Delete);
  stream.Close();

简而言之,如果文件被锁定,您(您=任何其他进程/线程)无法删除或修改(“清空”)它。有大量的第三方日志库,我建议您在任何一天都不要尝试自己的日志库。使用库将确保您不必担心这样的事情,因为这些库中的一些库在我记忆中已经存在了很长时间,并且非常健壮和可配置。我个人最喜欢的是,但也很受欢迎。在我看来,这不是一件合理/安全的事情。你应该弄清楚如何让持有文件锁的人释放它。你不能破坏另一个进程的文件锁。你所能做的就是将数据排在某个地方,并不断检查要释放的锁,然后执行你的操作(编辑/删除/清除)。我无法释放锁,因为写入日志文件的服务仍在运行。powershell cmdlet Clear Content正是此案例的目的。也许我应该指定该文件是通过该过程“打开”的,我仍然可以使用notepad++等工具打开该文件并手动清除。我不确定这是否是另一个锁。简言之,如果文件被锁定,您(您=任何其他进程/线程)无法删除它或修改(“空”)它。有大量的第三方日志库,我建议您在任何一天都不要尝试自己的日志库。使用库将确保您不必担心这样的事情,因为这些库中的一些库在我记忆中已经存在了很长时间,并且非常健壮和可配置。我个人最喜欢的是,但也很受欢迎。在我看来,这不是一件合理/安全的事情。你应该弄清楚如何让持有文件锁的人释放它。你不能破坏另一个进程的文件锁。你所能做的就是将数据排在某个地方,并不断检查要释放的锁,然后执行你的操作(编辑/删除/清除)。我无法释放锁,因为写入日志文件的服务仍在运行。powershell cmdlet Clear Content正是此案例的目的。也许我应该指定该文件是通过该过程“打开”的,我仍然可以使用notepad++等工具打开该文件并手动清除。我不确定这是否是另一个锁。这似乎与大多数托管代码工具(包括PowerShell)在打开文件时忽略了
FileShare.Delete
选项有关。较旧的本机代码应用程序通常在允许共享/删除的情况下打开文件。这是我更喜欢旧方法的情况之一。这似乎与大多数托管代码工具(包括PowerShell)在打开文件时忽略了
FileShare.Delete
选项有关。较旧的本机代码应用程序通常在允许共享/删除的情况下打开文件。这是我更喜欢旧方法的案例之一。