我有我的应用程序的日志文件,我在日志文件上通过双面应用程序进行一些操作。 在操作结束时,我想删除文件 - 这是不可能的,因为我只是想清空它 - 删除内容。
我试过了:
using (FileStream stream = File.Open(query.FileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
using (StreamWriter writer = new StreamWriter(stream, true))
{
writer.Write("");
reader.Close();
}
}
和
using (FileStream stream = File.Open(query.FileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
stream.SetLength(0);
stream.Close();
}
和
System.IO.File.WriteAllText(@"path", string.Empty);
Notihg的作品。
如何覆盖文件内容?
答案 0 :(得分:2)
完全没有。它会崩溃,因为文件正由另一个进程使用
嗯,这可能不是另一个过程,它可能是你的。关闭日志文件后,您必须执行此操作。但是有一个更普遍的解决方案。返回创建日志文件的代码并添加FileShare.Delete选项。
此选项允许删除正在使用的文件。您现在可以在代码中使用File.Delete(),即使日志文件仍处于打开状态。这将使文件处于“删除暂挂”状态,任何试图打开它的人都会被拒绝访问错误。当文件的最后一个句柄关闭时,磁盘上的文件将自动消失。
另一个有用的选项是FileOptions.DeleteOnClose。现在它是完全自动的,文件会自动删除,而您根本不需要做任何事情。在你的情况下,我不知道哪一个是最好的,你可能想避免在你的程序崩溃时删除日志文件,所以FileShare.Delete是最好的。
答案 1 :(得分:0)
您也可以使用以下代码
System.IO.File.WriteAllText(@"Path of your file",string.Empty);