【问题标题】:NSFilemanager doesn't create fileNSFilemanager 不创建文件
【发布时间】:2011-04-11 18:59:10
【问题描述】:

我的 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;
}

【问题讨论】:

    标签: objective-c cocoa xcode ios4 xcode4


    【解决方案1】:

    我不确定为什么没有创建文件。乍一看,您的代码看起来应该可以工作。但我可能忽略了一些东西。这还取决于您作为参数传递给 storeFile:withName:atDirectory: 方法的具体内容。

    尽管如此,我还是发布了答案,因为我确实在您的代码中发现了另一个错误:您应该release 发送到filemgr,因为您也没有先发送retain 给它并且您确实没有创建了该对象。在这种情况下,也不需要发送retain 给它,因为您只是在方法中本地使用它。您可能需要查看 Apple Developer Connection 文档“Cocoa Core Competencies: Memory Management”。

    我认为这个错误不能解释为什么没有创建文件;虽然我很惊讶您的应用程序不会因此而崩溃。

    【讨论】:

    • 如果我不创建文件夹并尝试创建相同的文件但在文档文件夹中它发生得很好..我想我必须设置新文件夹的权限......
    • 您好,感谢您的帮助,我刚刚找到了解决方案!!!问题是我没有将文件名附加到文件路径... omg 这个问题解决了...
    猜你喜欢
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2011-03-27
    • 2012-02-02
    • 2012-09-24
    相关资源
    最近更新 更多