2013-01-16 60 views
-3

我是目標c中的新程序員。我想在手機裏創建「下載」目錄(路徑:設置(我的手機設置目錄))我想知道它有可能嗎?我正在使用我的手機模擬器來測試該程序。如何在iphone設置中創建目錄c

另一個問題是,我如何訪問我手機模擬器中創建的目錄。下面包含我嘗試在手機中創建文件夾的代碼。但我無法通過使用手機模擬器訪問該目錄。這段代碼有什麼錯誤?

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

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) 
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; 

回答

3

您可以到文檔目錄創建目錄像這樣子文件夾: -

-(IBAction)CreatDirInDocDir 
{ 

    NSFileManager *filemgr = [NSFileManager defaultManager]; 
    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
    NSString *dir = [NSString stringWithFormat:@"%@",DirName]; 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:dir]; 

    NSError *error; 

    if ([filemgr fileExistsAtPath:path ] == YES){ 

    } 
    else 
    { 
     NSLog (@"File not found"); 

     [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:&error]; 
    } 


} 

當你採到文檔目錄文件夾中創建目錄,然後你可以創建自定義目錄的所有列表這樣的方式: -

//Get all Directory 

NSFileManager *fileMan = [NSFileManager defaultManager]; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSArray *filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory error:nil]; 

    NSLog(@"files array %@", filePathsArray); 

    NSMutableArray *directoryList=[[NSMutableArray alloc]init]; 


    for (NSString *direPath in filePathsArray) 
    { 
     NSString *path = [documentsDirectory stringByAppendingPathComponent:direPath]; 
     BOOL isDir = NO; 
     [fileMan fileExistsAtPath:path isDirectory:(&isDir)]; 
     if(isDir) { 
      NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:path]; 
      NSLog(@"log path ==%@",fullPath); 
      [directoryList addObject:fullPath]; 
     } 
    } 

的NSLog(@ 「列表路徑==%@」,directoryList);

現在,你擁有所有目錄的數組,你可以得到任何目錄索引:) 希望它可以幫助你

+0

我如何播種這個創建的目錄在我的手機? @Nitin – Himesh

+0

我剛剛編輯我的答案等5片薄荷...做所有的東西:) –

+0

現在檢查希望它可以幫助你:) –

1

有關創建目錄,你可以使用:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Test"]; 
NSError *error; 

if (![[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]) 
{ 
    NSLog(@"Couldn't create directory error: %@", error); 
} 

爲了得到該目錄裏的文件,你可以使用:

NSArray *datArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:dataPath error:&error]; 
if(error) 
{ 
    NSLog(@"Could not get list from directory, error = %@",error); 
} 

這裏所有的文件名會在datArray

0

無需追加「/」。只需使用

NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Test"]; 

嘗試這個

NSArray *dirPath; 
NSString *docsDir; 
NSFileManager *filemgr = [NSFileManager defaultManager]; 
dirPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
docsDir = [dirPath objectAtIndex:0]; 

if ([filemgr changeCurrentDirectoryPath: docsDir] == NO) 
{ 
    NSLog(@"Error"); 
}else { 
    NSString *currentPath = [filemgr currentDirectoryPath]; 
    NSLog(@"%@",currentPath); 
} 

NSString *dataDirectory = [docsDir stringByAppendingPathComponent:@"Test"]; 
if ([filemgr fileExistsAtPath:dataDirectory]){ 
     NSLog(@"dir Exist"); 
    }else{ 
NSLog(@"Creating Dir"); 
[filemgr createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; 
} 
2

所有的方法貼在這裏是正確的,有噸關於他們的答案,但我想提醒你有關的概念。自推出iCloud以來,Apple開始拒絕在文件目錄中保存大量數據的應用程序,這些應用程序通過緩存使用時,或者可以稍後再次下載。這裏的問題是您可以在雲上備份您的ios設備,並且文檔目錄是備份的其中一個。你可以想象自己在雲上的應用程序中回退一個GB嗎?這是關於蘋果拒絕的解釋。
爲了避免temp/redownloadable/cached數據應保存在緩存目錄中。當設備在「磁盤」上的空間不足時,這個有用的目錄將被釋放,就像當您嘗試安裝新應用程序並且您沒有足夠的空間時一樣。因此,如果您的數據可以再次下載並且不是不可缺少的,那麼這很好。
另一種方式是將數據保存在文檔目錄中,但告訴系統不要備份它們,這可能會在保存該文件的doc子目錄中添加一個特殊標誌,這裏是如何注意這種方法只能從5.0.1開始使用,因此如果您定位較低的ioses,則需要檢查其存在。在這種情況下,系統不會釋放您的數據並且不會對它們進行備份,這對於Apple指南是安全的。
希望這有助於

+0

寶貴的答案。其實我是一個新的程序員來客觀的C.在我做C#.net之前。 – Himesh

0

任何想顯示在我的手機模擬器你創建的目錄遵循波紋管步驟:

  1. 轉到尋人
  2. 單擊命令+ Shift + G鍵
  3. 輸入〜/ Library然後單擊去
  4. 打開應用程序支持 - >我的手機模擬器

然後你可以找到你科瑞編輯的應用程序和目錄..