2012-06-25 20 views
10

Używam następujący wiersz kodu, aby zapisać mój plik yoyo.txt w folderze Documents ::utworzyć folder programowo w Xcode - Cel C

NSString *docDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
NSLog(@"docDir is yoyo :: %@", docDir); 
NSString *FilePath = [docDir stringByAppendingPathComponent:@"yoyo.txt"]; 

Jednak życzę, aby zapisać swój plik w folder yoyo czyli w folderze Dokumenty, tzn. chcę utworzyć kolejny folder o nazwie "yoyo", a następnie zapisać w nim plik yoyo.txt. Jak mogę to zrobić ?? Dzięki.

+0

Xcode jest IDE. Językiem jest Objective C, możesz napisać ten sam kod w edytorze tekstu i skompilować go w linii poleceń. Powszechnym błędem jest jednak mieszanie 'Xcode' i' Objective C'. –

Odpowiedz

15

Oto przykładowy kod (zakładamy manager jest [NSFileManager defaultManager]):

BOOL isDirectory; 
NSString *yoyoDir = [docDir stringByAppendingPathComponent:@"yoyo"]; 
if (![manager fileExistsAtPath:yoyoDir isDirectory:&isDirectory] || !isDirectory) { 
     NSError *error = nil; 
     NSDictionary *attr = [NSDictionary dictionaryWithObject:NSFileProtectionComplete 
                 forKey:NSFileProtectionKey]; 
     [manager createDirectoryAtPath:yoyoDir 
      withIntermediateDirectories:YES 
          attributes:attr 
           error:&error]; 
     if (error) 
      NSLog(@"Error creating directory path: %@", [error localizedDescription]); 
    } 
+0

co to jest "isDictionary" w kodzie. Jaki jest cel NSDictionary, który zadeklarowałeś w swoim kodzie? – kamalbhai

+0

isDictionary to BOOL, używany do sprawdzania, czy plik, który istnieje w ścieżce, jest katalogiem, ponieważ może istnieć plik, który nie jest katalogiem ... Słownik jest używany do przekazywania atrybutów dla nowo utworzonego katalogu w kodzie, który mam opublikował to: 'Plik jest przechowywany w zaszyfrowanym formacie na dysku i nie można go odczytać ani zapisać w czasie, gdy urządzenie jest zablokowane lub uruchomione. Możesz przekazać' nil' do tego. Możesz również zobaczyć [NSFileManager Class Reference] (https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsfilemanager_Class/Reference/Reference.html) – graver

11
+(void)createDirForImage :(NSString *)dirName 
{ 
    NSString *path; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    path = [[paths objectAtIndex:0] stringByAppendingPathComponent:dirName]; 
    NSError *error; 
    if (![[NSFileManager defaultManager] fileExistsAtPath:path]) //Does directory already exist? 
    { 
     if (![[NSFileManager defaultManager] createDirectoryAtPath:path 
             withIntermediateDirectories:NO 
                 attributes:nil 
                  error:&error]) 
     { 
      NSLog(@"Create directory error: %@", error); 
     } 
    } 

} 
2

Tutaj DataPath będzie ostateczna droga do zapisywania pliku

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder 
     NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/yoyo"]; 

     if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]){ 
      [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder 
    } 
    dataPath = [dataPath stringByAppendingPathComponent:@"/yoyo.txt"];