1

このように、私のアプリでUIScrollViewは、サムネイルビューがあり、私のNSCachesDirectory. それらをピッカーから保存し、配列に次のように名前を付けました:images0.png,images.1.png...など

たとえば、次のようにディレクトリに画像がありますimages0.png, images1.png, images2.png, images3.png

次に、images1.png を削除します。残りの画像は次のようになりimages0.png,images2.png, images3.pngます。

私が達成したかったのは、画像を取得してから再度名前を変更するか、 ...などNSDocumentsDirectoryのように再度並べ替えることですか? images0.png, images1.png, images2.pngこれは可能ですか?あなたが私を助けてくれることを願っています。

4

2 に答える 2

1

このNSFileManger moveItemAtPath: toPath: error:を使用しますが、 toPath:same_path_but_different_filenameを指定 する必要があります。これにより、指定した新しいファイル名を持つ新しいパスにファイルが移動します。これを見る

ロジック全体で画像ファイルの名前を変更したいようですので、ファイルがドキュメントディレクトリにある場合に試すことができるコードを次に示します

NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString * oldPath =[[NSString alloc]init];
NSString * newPath =[[NSString alloc]init];

int count=0;
for (int i=0; i<=[[fileManager contentsOfDirectoryAtPath:documentsDirectory error:nil]count]; i++) {

    oldPath=[documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"images%d.png",i]];

    if ([fileManager fileExistsAtPath:oldPath]) {

        newPath=[documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"images%d.png",count]];
        [fileManager moveItemAtPath:oldPath toPath:newPath error:nil]; 
        count+=1;

    }

}
于 2012-09-06T04:06:38.190 に答える
0

Appleは、保存されたファイルの名前変更を許可していません。したがって、別の方法は、次のようにドキュメントディレクトリのすべてのコンテンツを取得することです。

NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:yourDocDirPath error:NULL];

次のように並べ替えます。

NSSortDescriptor * descriptor = [NSSortDescriptor sortDescriptorWithKey:nil ascending: YES comparator:^NSComparisonResult(id obj1, id obj2){
     return [obj1 compare: obj2 options: NSNumericSearch];
 }];

NSArray * sortedDirectoryContent = [directoryContent sortedArrayUsingDescriptors:[NSArray arrayWithObject: descriptor]];

配列を並べ替えて、すべてのファイルを新しい名前で書き換えました。

for(NSString *fileName in sortedDirectoryContent)
{
  NSString *filePath = [yourDocDirPath stringByAppendingPathComponent:fileName];
  NSData *fileData = [[NSData alloc]initWithContentsOfFile:filePath];
  if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
    [[NSFileManager defaultManager] removeItemAtPath:filePath error:nil];

    if(fileData)
    {
        NSString *newFilePath = [yourDocDirPath stringByAppendingPathComponent:@"New Name here"];
        [fileData writeToFile:newFilePath atomically:YES];
    }
  }
  else
  {
    if(fileData)
    {
        NSString *newFilePath = [yourDocDirPath stringByAppendingPathComponent:@"New Name here"];
        [fileData writeToFile:newFilePath atomically:YES];
    }
  }

}
于 2012-09-06T04:42:29.627 に答える