gpt4 book ai didi

objective-c - fileExistsAtPath 为存在的目录返回 NO

转载 作者:可可西里 更新时间:2023-11-01 03:36:36 26 4
gpt4 key购买 nike

fileExistsAtPath 为存在的目录返回 NO。如果我有以下代码:

NSURL *newDirectoryPath = ... // path does not begin with a tilda
// and is created using URLByAppendingPathComponent:isDirectory:

BOOL directoryExists = [self.fileManager fileExistsAtPath:[newDirectoryPath absoluteString]];
if (NO == directoryExists)
{
BOOL ret = [self.fileManager moveItemAtURL:self.currentPresentationDirectoryPath toURL:newDirectoryPath error: &err];
// ret is YES, err is nil

directoryExists = [self.fileManager fileExistsAtPath:[newDirectoryPath absoluteString]];
}

即使刚刚使用 moveItemAtURL 成功创建目录,fileExistsAtPath 仍返回 NO。

我知道文档是这样说的:

Attempting to predicate behavior based on the current state of the file system or a particular file on the file system is not recommended. Doing so can cause odd behavior in the case of file system race conditions.

但我想了解这里的问题所在 - 如果我关闭应用程序并重新启动它,那么在上面的代码中第一次检查 fileExistsAtPath 仍然返回 NO,即使该目录之前是前面执行代码时创建成功,在Organizer中可以看到目录,也可以成功读取目录内容等等等等。

附言没有 fileExistsAtURL: 方法吗?

最佳答案

如果您有一个 NSURL-absoluteURL 将不会为 NSFileManager 返回可用路径。它将返回带有 file:// 前缀的绝对 URL。例如:file:///path/to/file

尝试使用其他方法,例如 -path。检查是否有效。

NSURL *myURL = /* some url */;
NSString *myPath;
BOOL exi;

myPath = [myURL path];
exi = [[NSFileManager defaultManager] fileExistsAtPath:myPath];
if(!exi) {
NSLog(@"File does not exist");
}

关于objective-c - fileExistsAtPath 为存在的目录返回 NO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8809054/

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