2013-05-04 130 views
6

我想在我的applicationSupportDirectory中创建一个目录。我的理解是,applicationSupportDirectory不允许用户查看其中的数据。这就是我选择它的原因。但是,我在下面使用的代码似乎失败了,我不知道为什么。以编程方式创建目录

有谁能告诉我我做错了什么吗?谢谢!

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); 
NSString *applicationDirectory = [paths objectAtIndex:0]; // Get directory 
NSString *dataPath = [applicationDirectory stringByAppendingPathComponent:@"drawings"]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]){ 

NSError* error; 
if([[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]) 
    ;// success 
else 
{ 
    NSLog(@"Failed"); 
} 
} 
} 
+0

请更改withIntermediateDirectories:是 “YES” – dhaya 2013-05-04 05:13:07

回答

5
NSString *directoryName = @"drawing"; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); 

NSString *applicationDirectory = [paths objectAtIndex:0]; 
NSString *filePathAndDirectory = [applicationDirectory stringByAppendingPathComponent:directoryName]; 
NSError *error; 

if (![[NSFileManager defaultManager] createDirectoryAtPath:filePathAndDirectory 
           withIntermediateDirectories:YES 
               attributes:nil 
                error:&error]) 
{ 
    NSLog(@"Create directory error: %@", error); 
} 

希望它会帮助你

6

试试这个,它为我工作。

NSString* documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                   NSUserDomainMask, 
                   YES)[0]; 
NSString *folder = [documentsPath stringByAppendingPathComponent:@"foldername"]; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError *error = nil; 
if (![fileManager fileExistsAtPath:folder]){ 
    [fileManager createDirectoryAtPath:folder 
      withIntermediateDirectories:YES 
          attributes:nil 
           error:&error]; 
} 
+0

这个答案其实是更好的。它只创建目录,如果它不存在。竖起大拇指! – Farini 2013-09-23 16:34:21

-1

要创建Dirtectory

NSError *error; 
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/directoryname"]; 
NSLog(@"%@",path); 
if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { 
    [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error]; 
    // Set do not backup attribute to whole folder 

}