我不明白這種方法是如何工作的。下面是代碼有沒有什麼im不足以說明fileExistsAtPath:isDirectory方法?
BOOL isDir = NULL;
BOOL returnVal;
path = @"/Users/me/Desktop/kkk";
returnVal = [[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDir];
,這裏是結果,如果:
1)三K黨是一個文件
returnVal = NO
isDir = NO
2)三K黨是一個空目錄
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」的文件夾。它適用於該文件夾,但不適用於該文件。有趣的是,如果文件有的擴展名,它的工作原理。那麼,沒有擴展名的文件有什麼問題嗎? (你們這些人仍無法與沒有extention重現嗎?)
2)編輯
謝謝你幫我解決了這個傢伙。我已將我的Mac設置爲顯示文件的擴展名。但是,Mac似乎是一種奇怪的行爲。我選擇文件「kk.plist」,然後將該文件重命名爲「kk」,如圖中所示。只要我這樣做,Mac OSx就會自動選擇隱藏擴展選項。所以當我認爲文件是「kk」時,它仍然是「kk.plist」,其擴展名隱藏。正如你所看到的,這兩個文件具有相同的擴展名,一個隱藏,另一個不是。我沒有意識到隱藏的擴展只能應用於一個文件。謝謝。
我無法使用相似的路徑名重現此問題。我每次都會得到預期的結果。 – dreamlax
我無法複製。你的路上可能有一個錯字。 – Kevin
我猜在第一種情況下,「kkk」不存在於您要查找的位置。 –