gpt4 book ai didi

objective-c - 检查目录是否为空或仅在 Objective-C 中为空时删除

转载 作者:搜寻专家 更新时间:2023-10-30 19:55:12 25 4
gpt4 key购买 nike

NSFileManager removeItemAtURL 仅执行递归删除。非空目录没有特殊处理。

如何通过预先测试条件只删除空目录?有 contentsOfDirectoryAtPath 来获取文件列表,它可能是空的,但那太过分了。

或者,是否有仅在为空时才删除它的函数,比如 good ol' rmdir?啊,我可以这样称呼……

最佳答案

如果你想留在基金会的土地上,就必须使用它,别无他法。

但如果这样做,就会引入竞争条件:在列出目录内容之后,在删除目录之前,其他一些程序可能会在其中写入一个新文件,然后该文件会被删除。因此,您必须要么接受您要删除文件夹及其所有内容的事实,要么必须寻找不同的 API。

您可以像这样使用 POSIX rmdir 函数来实现您的目标:

NSString *path = [url path];
int result = rmdir( [path fileSystemRepresentation] );
if (result == 0) // everything ok
else // lookup error code from errno

如果目录不为空,您将收到错误代码 ENOTEMPTY

关于objective-c - 检查目录是否为空或仅在 Objective-C 中为空时删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11323402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com