ディレクトリ[[self documentsDirectory] stringByAppendingPathComponent:@"Photos/"]
このフォルダ内のすべてのファイルを削除するにはどうすればよいですか?
(正しいドキュメントディレクトリパスを想定)
NSFileManager *fm = [NSFileManager defaultManager];
NSString *directory = [[self documentsDirectory] stringByAppendingPathComponent:@"Photos/"];
NSError *error = nil;
for (NSString *file in [fm contentsOfDirectoryAtPath:directory error:&error]) {
BOOL success = [fm removeItemAtPath:[NSString stringWithFormat:@"%@%@", directory, file] error:&error];
if (!success || error) {
// it failed.
}
}
エラーが存在する場合は、エラーに対して何か役に立つことをするのはあなた次第です。
ファイルとディレクトリ自体を削除する場合は、for
ループなしで使用します
NSFileManager *fm = [NSFileManager defaultManager];
NSString *directory = [[self documentsDirectory] stringByAppendingPathComponent:@"Photos"];
NSError *error = nil;
BOOL success = [fm removeItemAtPath:cacheImageDirectory error:&error];
if (!success || error) {
// something went wrong
}
Swift lovers:
let fm = FileManager.default
do {
let folderPath = "...my/folder/path"
let paths = try fm.contentsOfDirectory(atPath: folderPath)
for path in paths
{
try fm.removeItem(atPath: "\(folderPath)/\(path)")
}
} catch {
print(error.localizedDescription)
}
古い回答のほとんどでは、contentsOfDirectoryAtPath:error:
これは動作しますが、 Appleによる :
「ファイルまたはディレクトリの場所を指定する好ましい方法は、NSURLクラスを使用することです」
そのため、代わりにNSURLを使用する場合は、メソッドcontentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:
したがって、次のようになります。
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray<NSURL*> *urls = [fileManager contentsOfDirectoryAtURL:directoryURL includingPropertiesForKeys:@[NSURLNameKey, NSURLIsDirectoryKey] options:NSDirectoryEnumerationSkipsHiddenFiles error:nil];
for (NSURL *url in urls)
{
NSError *error = nil;
BOOL success = [fileManager removeItemAtURL:url error:error];
if (!success || error) {
// something went wrong
}
}
Swift 4
do {
let destinationLocation:URL = ...
if FileManager.default.fileExists(atPath: destinationLocation.path) {
try! FileManager.default.removeItem(at: destinationLocation)
}
} catch {
print("Error \(error.localizedDescription)")
}