2013-01-16 81 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. 打开应用程序支持 - >我的手机模拟器

然后你可以找到你科瑞编辑的应用程序和目录..