0

フォルダー (さらにサブディレクトリが含まれている可能性のあるサブディレクトリを含む) を反復処理し、ディレクトリでない場合はファイルを削除するにはどうすればよいですか? 基本的に、すべてのディレクトリをクリアする方法を尋ねています。enumeratorAtPath:現在のファイルがディレクトリかどうかを列挙子に尋ねる方法がわからないため、この点でメソッドに少し問題があります。fileAttributes辞書に目を通す必要があります。注: これは私の間違いかもしれませんが、パスの NSString で列挙子を初期化します。これで何か変わりますか?

4

1 に答える 1

7

次のようなものが機能します。

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];
    }
}
于 2013-07-14T03:25:22.613 に答える