安全删除NSURL文件并在NSProgressIndicator中显示百分比

时间:2014-01-27 03:36:00

标签: cocoa

我正在尝试为Mac创建一个“文档碎纸机”应用程序。我有用户选择的文件的NSURL,但我如何安全地删除所述文件并将进度传递到进度条?

2 个答案:

答案 0 :(得分:1)

您希望查看文件I / O的posix层调用,以及那些可以覆盖文件并实现您选择的安全删除算法的文件。

如果您只需要安全删除文件而不关心在GUI中显示进度,则可以使用srm调用NSTask(安全删除)命令。有关srm在终端窗口中输入man srm的详细信息。

如果您确实希望在GUI中显示进度,则可以转换该命令的输出,使用NSTask捕获并按您的选择显示。或Apple为srm提供源代码,您可以在Apple Open Source站点上找到它here,您可以将代码/算法合并到您自己的代码中,并在GUI中提供进度指示。

HTH

答案 1 :(得分:0)

没有直接的方法从Cocoa API“安全删除”文件。

您可以使用NSFileManager将文件移动到垃圾桶中,然后通过Finder菜单将其留给用户删除或安全删除文件。

您还可以使用NSFileManager将文件移动到废纸篓中,然后使用AppleScript向Finder发送消息以删除/安全删除文件,但是,这通常不是一个好主意,除非您的用户明确要求您清空他们的垃圾箱你可以删除他们尚未准备删除的内容。

否则,似乎没有简单或直接的方法来完成文件的安全删除,就像使用标准API一样,无法保证您写入磁盘的字节将覆盖之前存在的字节。

您可能还想在此处查看此前一个问题,了解安全删除不安全的原因: how to write back to an existing file, ensuring the bits on the disk get overwritten in OS X