在该主题上我能找到的只是提到FSMoveObjectToTrashSync
函数,现在是deprecated and no alternative is listed for it。
如何用C或Objective-C代码做到这一点?
答案 0 :(得分:3)
使用NSFileManager:
https://github.com/aws-samples/aws-mobile-appsync-events-starter-ios
- trashItemAtURL:resultingItemURL:error: 将物品移到垃圾箱。
答案 1 :(得分:1)
在C中,您可以使用AppleScript将文件移至回收站。这是一个简单的示例:
#include <stdio.h>
#include <stdlib.h>
#define PATH "/tmp/"
#define NAME "delete-me.txt"
int main() {
int status;
/* Create a file */
FILE *f;
f = fopen(PATH NAME, "w");
if (!f) {
fputs("Can't create file " PATH NAME "\n", stderr);
return 1;
}
fputs("I love trash\n", f);
fclose(f);
/* Now put it in the trash */
status = system(
"osascript -e 'set theFile to POSIX file \"" PATH NAME "\"' "
"-e 'tell application \"Finder\"' "
"-e 'delete theFile' "
"-e 'end tell' "
">/dev/null"
);
if (status == 0) {
puts("Look in the trash folder for a file called " NAME);
}
else {
puts("Something went wrong. Unable to delete " PATH NAME);
}
return 0;
}
一些注意事项:
-e
命令行选项发送。osascript
坚持将状态消息打印到命令行控制台,因此我将其输出重定向到/dev/null
。 但是,如果回收站中已经存在同名文件,则删除的文件将被重命名。如果您需要知道此名称,则必须使用popen()
而不是system()
并解析osascript
中的返回字符串。