我需要在做一些工作时创建临时文件,并在完成工作时自动删除文件。此文件包含一些信息,供其他应用程序读取,并在工作完成时变得不必要。我尝试使用FileShare.Read
和FileOptions.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.Read
与FileOptions.DeleteOnClose
无法合作?