2011-04-11 61 views
0

我有一个的NSFileManager的问题,因为我只能存储一个文件到申请文件目录,但我想创建一个文件到一个子目录这我不认为为什么,我不能”创造。我的代码如下:的NSFileManager不创建文件

+(NSString *)applicationDocumentsDirectory { 
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
} 

+(BOOL)storeFile:(NSData*)file withName:(NSString*)name atDirectory:(NSString*)dir{ 

    NSFileManager *filemgr; 
    NSString *docsDir; 
    NSString *newDir; 
    BOOL create=NO; 
    filemgr =[NSFileManager defaultManager]; 


    docsDir = [StorageManager applicationDocumentsDirectory]; 

    newDir = [docsDir stringByAppendingPathComponent:dir]; 

    if(![filemgr fileExistsAtPath:newDir]){ 
     if([filemgr createDirectoryAtPath:newDir withIntermediateDirectories:NO attributes:nil error:nil]){ 
      create=YES; 
     }  
    }else 
     create=YES; 

    if(create){ 
     if(![filemgr createFileAtPath:newDir contents:file attributes:nil]){ 
      [filemgr release]; 
      return YES; 
     } 
    } 

     [filemgr release]; 
    return NO; 
} 

回答

0

我不知道为什么文件没有创建。乍一看,它看起来像你的代码应该工作。但我可能会忽视某些事情。这也取决于你逝去的正是作为参数传递给storeFile:withName:atDirectory:方法。

不过我张贴的答案,因为我没有发现在你的代码另一个错误:你应该发送releasefilemgr因为你还没有送retain首先将它和你没有创建对象。在这种情况下,没有必要,发送到retain,要么因为你只使用它的本地方法中。您可能想查看Apple Developer Connection文档“Cocoa Core Competencies: Memory Management”。

我不认为这个错误解释了为什么文件没有建立;尽管我很惊讶你的应用程序不会因为它而崩溃。

+0

如果我不创建文件夹,并尝试创建相同的文件,但里面的文档文件夹它发生以及..我想我有权限设置为newfolder ... – Jovem 2011-04-11 20:40:49

+0

您好,感谢帮助我只是觉得解决方案!!!问题是我并没有附加到文件名... OMG这个问题就解决了...... – Jovem 2011-04-11 21:24:15

+0

哎呀,你是对的文件路径!我错过了那一个。 – Rinzwind 2011-04-12 05:40:00