为什么`FileShare.Read`与`FileOptions.DeleteOnClose`结合使用?

时间:2018-04-18 09:26:26

标签: c# .net filestream

我需要在做一些工作时创建临时文件,并在完成工作时自动删除文件。此文件包含一些信息,供其他应用程序读取,并在工作完成时变得不必要。我尝试使用FileShare.ReadFileOptions.DeleteOnClose,但在这种情况下,其他应用程序无法读取该文件。

var documentName = "some-document";
var editor = "Bob";

using (var fs = new FileStream($"{documentName}.log", FileMode.Create,
    FileAccess.Write, FileShare.Read, 4 * 1024, FileOptions.DeleteOnClose))
{
    string info = $"{DateTime.Now}: The '{documentName}.xml' file " +
        $"is edited by {editor} right now.";
    var data = Encoding.UTF8.GetBytes(info);
    fs.Write(data, 0, data.Length);

    // Here is some big work with some-document.xml file

    #if DEBUG
        fs.Flush();
    #endif
} // <-- I set the breakpoint here in IDE and try to open 
  // the some-document.log file by Notepad++.
  // But Notepad++ can't to do it.

如果我评论, 4 * 1024, FileOptions.DeleteOnClose代码块,那么其他应用程序可以读取我的some-document.log文件。但在这种情况下,我要编写额外的代码块来删除我的临时文件(我想将其删除......)。

为什么FileShare.ReadFileOptions.DeleteOnClose无法合作?

0 个答案:

没有答案