我不明白这种方法是如何工作的。这是代码
BOOL isDir = NULL;
BOOL returnVal;
path = @"/Users/me/Desktop/kkk";
returnVal = [[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDir];
以下是以下结果:
1) kkk 是一个文件
returnVal = NO
isDir = NO
2) kkk 是一个空目录
returnVal = YES
isDir = YES
场景 #2 似乎按预期工作,但根据文档:
path
The path of a file or directory. If path begins with a tilde (~), it must first be expanded with stringByExpandingTildeInPath, or this method will return NO.
isDirectory
Upon return, contains YES if path is a directory or if the final path element is a symbolic link that points to a directory, otherwise contains NO. If path doesn’t exist, this value is undefined upon return. Pass NULL if you do not need this information.
那么对于场景#1,结果不应该如下吗?
returnVal = YES
isDir = NO
1)编辑 以下评论。
但文件确实存在。我手动创建文件来测试它。哈哈。它只是一个有 4 行代码的程序。我在桌面上有两个文件/文件夹。首先,我在那里放了一个名为“kkk”的文件(没有扩展名),然后我删除了该文件并在那里放置了一个名为“kkk”的文件夹。它适用于文件夹,但不适用于文件。有趣的是,如果文件有扩展名,它就可以工作。那么没有扩展名的文件有问题吗?(你们仍然无法在没有扩展的情况下复制它吗?)
2) 编辑
谢谢你们帮我解决这个问题。我的 Mac 设置为显示文件的扩展名。但似乎 Mac 是一种奇怪的行为。我选择文件“kk.plist”,然后将文件重命名为“kk”,如图所示。一旦我这样做,Mac OSx 会自动选择隐藏扩展选项。所以当我认为文件是“kk”时,它仍然是隐藏扩展名的“kk.plist”。如您所见,两个文件具有相同的扩展名,一个是隐藏的,另一个不是。我没有意识到隐藏的扩展名只能应用于一个文件。谢谢。