我需要检查一个目录是否存在,如果不存在则创建它并在我的应用程序启动时锁定它。因此,只要应用程序运行,就没有人可以删除该目录。
我想我可以在其中保存一个哑文件并保持打开,因此无法删除但我不想如果可能的话。我怎样才能做到这一点?
现在,只要我需要在其中编写文件,我就会这样做:
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
即使在此示例中,仍然可以删除Directory.CreateDirectory
和File.Create
来电之间的目录。
答案 0 :(得分:0)
在目录中创建一个虚拟临时文件,并在程序生命周期内保持打开状态。这样,任何试图删除目录的人都会得到正在使用的"目录"错误消息,无法删除它。
答案 1 :(得分:0)
我建议你在某个地方创建一个临时文件夹,然后在那里进行处理,一旦完成创建并将文件移动到目标文件夹。每次成功完成后,您都可以删除临时文件夹。
答案 2 :(得分:0)
在dir上使用CreateFile WINAPI函数。没有经过测试,但我认为它会起作用。
[DllImport("kernel32.dll", SetLastError = true)]
private static extern SafeFileHandle CreateFile(
string lpFileName,
FileAccess dwDesiredAccess,
FileShare dwShareMode,
IntPtr lpSecurityAttributes,
FileMode dwCreationDisposition,
int dwFlagsAndAttributes,
IntPtr hTemplateFile);
const int FILE_FLAG_BACKUP_SEMANTICS = 0x02000000;
var dirlock = CreateFile("C:\\mydir", FileAccess.Read, FileShare.None, IntPtr.Zero, FileMode.Open,
FILE_FLAG_BACKUP_SEMANTICS, IntPtr.Zero);