2012-06-21 33 views
1

我試圖用NSFileManager來確定一個項目是一個文件還是一個子目錄。NSFileManager fileExistsAtPath:isDirectory usage

這是我有:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDir = [paths objectAtIndex:0]; 

NSError *error = nil; 
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[documentsDir stringByAppendingPathComponent:@"exported"] error:&error]; 

for (NSString *filename in files) { 
    NSString *path = [documentsDir stringByAppendingPathComponent:filename];   
    BOOL isDir; 
    if([[NSFileManager defaultManager] fileExistsAtPath:documentsDir isDirectory:&isDir] && isDir){ 
     NSLog(@"%@ is a directory", path); 
    } 
    else { 
     NSLog (@"%@ is a file", path); 
    } 
} 

我得到「是目錄」的文件以及子目錄。我搜索了類似的SO問題,我發現那裏的代碼和我正在嘗試使用的代碼之間沒有區別。

回答

4

看來你使用了錯誤的路徑來測試您的文件和目錄

在你fileExistsAtPath:您要測試documentsDir,而不是path

更正此

if([[NSFileManager defaultManager] fileExistsAtPath:documentsDir isDirectory:&isDir] && isDir) 

if([[NSFileManager defaultManager] fileExistsAtPath: path isDirectory:&isDir] && isDir)