Windows 我应该将临时文件写入临时目录吗?或者将临时文件写入最终目录?
应用程序保存文件时,典型的模式是将文件保存到临时位置,然后将临时文件移动到最终位置。在某些情况下,“移动”变为“替换”。在伪代码中:Windows 我应该将临时文件写入临时目录吗?或者将临时文件写入最终目录?,windows,file,permissions,io,acl,Windows,File,Permissions,Io,Acl,应用程序保存文件时,典型的模式是将文件保存到临时位置,然后将临时文件移动到最终位置。在某些情况下,“移动”变为“替换”。在伪代码中: Save temp file; if final file exists delete final file; move temp file to final filename; 其中有一个窗口,删除可能会成功,但移动可能不会成功,因此您可以通过以下方式处理此问题: Save temp file; if final file exists move
Save temp file;
if final file exists
delete final file;
move temp file to final filename;
其中有一个窗口,删除可能会成功,但移动可能不会成功,因此您可以通过以下方式处理此问题:
Save temp file;
if final file exists
move final file to parking lot
move temp file to final filename;
if move succeeded
delete previous final file.
else
restore previous final file.
现在回答我的问题:
我更喜欢将临时文件保存到最终目录:
已编辑:我看到您的“停车场”已经描述了我的建议,所以我不确定我在这里添加了多少内容。我更喜欢将临时文件保存到最终目录:
已编辑:我看到您的“停车场”已经描述了我的建议,所以我不确定我在这里添加了多少内容。Microsoft Word将临时文件保存到原始目录中,以波浪号(~)开头。我会遵循这个惯例。Microsoft Word将临时文件保存到原始目录中,以波浪号(~)开头。我会遵循这个惯例。如果临时文件只是临时文件,就在临时文件夹中创建一个临时文件。否则,请在其最终目标中创建它 注意事项: 1) 如果最终目的地是“拾取”文件夹,则这可能不起作用(除非“拾取”进程检查锁定的文件(它应该这样做))
2) 最终目标具有特殊权限,必须在代码中创建并应用这些权限才能移动到最终目标。如果临时文件只是临时文件,请在临时文件夹中创建临时文件。否则,请在其最终目标中创建它 注意事项: 1) 如果最终目的地是“拾取”文件夹,则这可能不起作用(除非“拾取”进程检查锁定的文件(它应该这样做))
2) 最终目的地具有特殊权限,必须在代码中创建并应用这些权限才能移动到最终目的地。1。是的,最好先保存到临时文件 因为如果文件创建因任何原因失败,最终文件将永远不会处于损坏状态。如果直接写入最终文件,程序中途崩溃。。。它肯定会使最终文件处于无效状态 2。是 “继承的”属性和权限当然会有所不同。但是大多数系统上的临时目录通常是预先配置好的,以便所有应用程序使用。但是,可能需要配置“最终文件”目录。比如说“程序文件”文件夹和Vista UAC
3。在替换之前,将ACL从最终文件复制到临时文件?1。是的,最好先保存到临时文件 因为如果文件创建因任何原因失败,最终文件将永远不会处于损坏状态。如果直接写入最终文件,程序中途崩溃。。。它肯定会使最终文件处于无效状态 2。是 “继承的”属性和权限当然会有所不同。但是大多数系统上的临时目录通常是预先配置好的,以便所有应用程序使用。但是,可能需要配置“最终文件”目录。比如说“程序文件”文件夹和Vista UAC
3。在替换之前,将ACL从最终文件复制到临时文件?为什么不使用户可以配置它?一些用户不喜欢临时文件污染他们的当前目录 为什么不让它由用户配置?一些用户不喜欢临时文件污染他们的当前目录 如果这些临时文件变成了永久文件,请在同一位置创建它们,以避免必须跨磁盘/分区“移动”文件的任何风险,这将导致更多的I/O(先复制,然后删除)
如果这些临时文件是真正的临时文件,请在临时目录中创建(并保留它们)。如果这些临时文件变成永久文件,请在同一位置创建它们,以避免必须跨磁盘/分区“移动”文件的风险,这将导致更多的I/O(作为副本,然后是
File file = File.createTempFile(imageFileName, null, storageDir);