如何擦除Objective-C中的文件

时间:2014-06-30 07:40:02

标签: objective-c cocoa swift

我试图找到一种使用Objective-C(或Swift)擦除磁盘上文件的方法。

Apple是否提供"内置"覆盖当前磁盘位置文件的解决方案?或者Mac OS X是否始终将文件写入其原始位置?

搜索Web(和StackOverflow)只显示某人想要删除的线程"删除"一份文件。我可以尝试将垃圾写入我想要擦除的文件中,但如果OS X将新内容写入磁盘上的其他位置,则无法帮助我。

我尝试使用Spotlight搜索提供的元数据检索位置,但这些结果不包含文件位置。

我有点坚持这一点,任何线索都将受到赞赏。

修改 我确实看过有关文件访问的Apple文档。它说

  

在写入文件后关闭文件时,系统会将零写入代码未触及的文件的任何部分。

  

截断文件以匹配您编写的数据的长度。对于您计划删除的临时文件,将文件截断为零长度。

如果我说得对,那就意味着文件应该被删除"当我打开它时,将长度截断为零并保存。然后文件系统应该用零覆盖内容。

来源(第34条;零填充延迟以成本提供安全性"在底部):https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/PerformanceTips/PerformanceTips.html#//apple_ref/doc/uid/TP40010672-CH7-SW1

1 个答案:

答案 0 :(得分:0)

如果要打开现有文件并覆盖数据,请使用NSFileHandle *

它会做你需要的一切。

+ (id)fileHandleForUpdatingAtPath:(NSString *)path

将打开文件,并寻求开头。除非你寻求到最后,然后再打电话

[myHandle write: data]将覆盖该文件的内容。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/nsfilehandle_Class/Reference/Reference.html