Datei umbenennen mit "moveItemAtPath"?!

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Datei umbenennen mit "moveItemAtPath"?!

    Servus,

    ich versuche gerade eine Datei mittels "moveItemAtPath:" umzubenennen.

    Quellcode

    1. NSString *oldFileName = @"0-1-1-0.xml";
    2. NSString *oldFilePath = [[NSBundle mainBundle] pathForResource:oldFileName ofType:nil];
    3. //...
    4. // Dateiinhalt wird nun in Array gespeichert, Dinge passieren mit dem Array
    5. //...
    6. NSString *newFileName = [oldFileName stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:@"1"]; // newFileName -> "1-1-1-0.xml"
    7. NSString *newFilePath = [[NSBundle mainBundle] pathForResource:newFileName ofType:nil];
    8. NSFileManager *fileManager = [NSFileManager defaultManager];
    9. if (![fileManager moveItemAtPath:oldFilePath toPath:newFilePath error:&error]) NSLog(@"ERROR RENAMING FILE!");
    10. else NSLog(@"Datei wurde umbenannt!");
    Alles anzeigen


    Nun landet die Console immer bei "ERROR RENAMING FILE!" und
    ich habe leider keine Idee, was ich falsch mache. ?(
    dealloc {
    [myLeak retain];
    }
  • NSSearchPathForDirectoriesInDomains gibt dir die unterschiedlichsten Verzeichnisse aus, z.B.

    Quellcode

    1. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask , YES);
    2. NSLog(@"Paths %@", paths);
    3. if ([paths count] < 1)
    4. {
    5. NSLog(@"Panic");
    6. return NO;
    7. }
    8. NSString *path = [paths objectAtIndex: 0];
    Alles anzeigen
    Seminare, Artikel, Code. ObjectiveCeeds - alles für die Apfelzucht.
  • Vielen dank, hat geholfen, auch wenn meine Lösung nichts mehr mit der ursprünglichen Fragestellung zu tun hat.

    Ich wollte eigtl. durch eine "0" oder "1" am Anfang des Dateinamens beschreiben, ob eine Datei bereits verwendet wurde.
    Die Dateien sind aber im Application-Bundle, logisch wenn man's weiss ... also: Die Idee durchstreichen und neu machen.

    Auch wenn das Topic ein anderes ist, schreib ich der Vollständigkeit halber mal meine Lösung hier hin.

    Ich lege jetzt eine "used.plist" an, die sich merkt, welche Datei schonmal verwendet wurde.

    Quellcode

    1. NSArray *newId = [NSArray arrayWithObjects:fileName, @"1", @"0", @"1", nil]; //Array mit aufgerufenem dateinamen + diversen Zusatzinfos
    2. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    3. NSString *myDir = [paths objectAtIndex:0];
    4. NSString *myPath = [myDir stringByAppendingPathComponent:@"used.plist"];
    5. BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:myPath];
    6. if (fileExists) {
    7. NSMutableArray *usedArray = [NSMutableArray arrayWithContentsOfFile:myPath]; //Da weiss ich jetzt, welche Datei schon aufgerufen wurde :)
    8. [usedArray addObject:newId];
    9. [usedArray writeToFile:myPath atomically:YES];
    10. }
    11. else {
    12. NSMutableArray *usedArray = [NSMutableArray array];
    13. [usedArray addObject:newId];
    14. [usedArray writeToFile:myPath atomically:YES];
    15. }
    Alles anzeigen


    Jetzt muss ich nur noch Doppel-Einträge verhinder, dass sollte aber nicht so schwer werden.
    dealloc {
    [myLeak retain];
    }

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von The-Ferryman ()