以编程方式删除文件时,文件在哪里?我用这段代码删除了它们,但今天的垃圾桶是空的。是否可以检索它们?
let filemgr = NSFileManager.defaultManager()
do{
let filelist = try filemgr.contentsOfDirectoryAtPath(fontFolderPath)
for filename in filelist {
do{ try filemgr.removeItemAtPath(fontFolderPath+filename)} catch{}
}
}catch{}
答案 0 :(得分:4)
使用NSFileManager的URL相关API,您有两个选择:
func removeItemAtURL(_ URL: NSURL) throws
立即删除项目,如Terminal.app中的/bin/rm
,并具有与removeItemAtPath
相同的功能。
func trashItemAtURL(_ url: NSURL,
resultingItemURL outResultingURL: AutoreleasingUnsafeMutablePointer<NSURL?>) throws
将项目移动到垃圾箱文件夹,通过输入指针返回垃圾箱中物品的位置。
答案 1 :(得分:2)
removeItemAtPath方法删除它们。他们走了。如果您想将某些内容移至垃圾箱,则需要使用NSWorkSpace。您可以在此处查看将整个目录移至废纸篓的示例:Move directory to trash
答案 2 :(得分:1)
基本上unixy系统以相同的方式管理文件,有一个引用计数,即硬链接数+文件打开次数...所以你可以打开一个文件,文件仍然存在,你可以使用有效的file descriptor
或FILE *
流对象写入并读取它,然后当它关闭时,文件实际上将从磁盘中删除...
int fd = open("somefile", O_RDWR);
unlink("somefile"); // removes somefile from the directory listing, but not disk
write(fd, "hello", 5);
lseek(fd,0,SEEK_SET); // seek to start of file
char buffer[6] = {0};
read(fd,buffer,5); // reads in "hello"
close(fd); // last reference removed, file is removed.
如果要将文件移动到废纸篓,这是一个不同的操作,特定于OS X和iOS