2013-07-14 47 views
0

如何遍歷一個文件夾(包含可能有更多子目錄的子目錄)並刪除不是目錄的文件?基本上,我問如何清除所有的目錄。我在這方面的enumeratorAtPath:方法有點麻煩,因爲我不知道如何向枚舉器詢問當前文件是否爲目錄。需要查看fileAttributes字典。注意:這可能對我來說是非常錯誤的,但我用路徑的NSString初始化枚舉器。這會改變什麼嗎?如何枚舉Objective-C中的目錄,並基本清除所有非目錄文件的目錄?

+1

什麼,特別是,你有麻煩? 'NSDirectoryEnumerator'和'NSFileManager'都有方法給你文件屬性,你可以從中測試目錄狀態。 –

回答

5

像這樣將工作:

NSURL *rootURL = ... // File URL of the root directory you need 
NSFileManager *fm = [NSFileManager defaultManager]; 
NSDirectoryEnumerator *dirEnumerator = [fm enumeratorAtURL:rootURL 
        includingPropertiesForKeys:@[NSURLNameKey, NSURLIsDirectoryKey] 
        options:NSDirectoryEnumerationSkipsHiddenFiles 
        errorHandler:nil]; 

for (NSURL *url in dirEnumerator) { 
    NSNumber *isDirectory; 
    [url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:NULL]; 
    if (![isDirectory boolValue]) { 
     // This is a file - remove it 
     [fm removeItemAtURL:url error:NULL]; 
    } 
} 
+0

像這樣使用'enumeratorAtURL:...'比使用'enumeratorAtPath:'簡單,因爲'enumeratorAtURL:...'返回絕對URL。 'enumeratorAtPath:'返回相對路徑,如果你正在枚舉當前目錄,那麼你只能直接傳遞給'removeItemAtPath:error:'。 –

相關問題