2

私はこの方法で保存しNSDocumentDirectoryます:

NSLog(@"%@", [info objectAtIndex:i]);
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory,    NSUserDomainMask ,YES );
NSString *documentsDir = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"Images%d.png", i]];

ALAssetRepresentation *rep = [[info objectAtIndex: i] defaultRepresentation];
UIImage *image = [UIImage imageWithCGImage:[rep fullResolutionImage]];

//----resize the images
image = [self imageByScalingAndCroppingForSize:image toSize:CGSizeMake(256,256*image.size.height/image.size.width)];

NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:savedImagePath atomically:YES];

内のすべての画像を削除する方法を知っていますNSDocumentDirectory

しかし、の名前の画像をすべて削除する方法について疑問に思っていましたoneSlotImages

ありがとう

4

4 に答える 4

5

これを試して、このコードをコピーするだけで、oneSlotImages という名前の画像が DocumentDirectory から削除されます。

NSArray *directoryContents =  [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] error:NULL];

    if([directoryContents count] > 0)
    {
        for (NSString *path in directoryContents)
        {
            NSString *fullPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:path];

            NSRange r =[fullPath rangeOfString:@"oneSlotImages"];
            if (r.location != NSNotFound || r.length == [@"oneSlotImages" length])
            {
                [[NSFileManager defaultManager] removeItemAtPath:fullPath error:nil];
            }
        }
    }
于 2012-07-12T10:59:37.213 に答える
2

NSFileManager のメソッドを見たことがありますか? おそらく、このようなものがすべての画像のループで呼び出されます。

[[NSFileManager defaultManager] removeItemAtPath:imagePath error:NULL];
于 2012-07-12T10:45:43.857 に答える
1

のように使用します。

NSArray *dirFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:strDirectoryPath error:nil];
NSArray *zipFiles = [dirFiles filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self CONTAINS[cd] %@", @"oneSlotImages"]];

配列zipFilesには、フィルタリングしたすべてのファイルの名前が含まれています。したがって、ファイル名にドキュメント ディレクトリの完全なパスをループで追加することにより、配列内のすべてのフィルター処理されたファイルの完全なファイル パスを作成できます。次に、ループを使用して、NSFileManager以下のようにオブジェクトのメソッドを呼び出すことができます

[fileManager removeItemAtPath: strGeneratedFilePath error: &err];

これにより、パスの itm がディレクトリから削除されます。

このようにして、ファイル名に含まoneSlotImagesれる . したがって、これを削除することをお勧めします。これがお役に立てば幸いです。

于 2012-07-12T10:56:32.473 に答える