【问题标题】:Writing and retrieving files from NSDocumentDirectory iOS从 NSDocumentDirectory iOS 写入和检索文件
【发布时间】:2016-06-13 21:14:28
【问题描述】:

我想从某个特定的 URL 下载 NSFileManager 中的文件(pdf、doc、docx 等)。稍后当用户点击同一链接时,我想从 NSFileManager 检索文件。这是我完成的代码:

    - (void)checkIfFileExist {

    NSString *path1;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    path1 = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Content-Directory"];
    path1 = [path1 stringByAppendingPathComponent:@"sample.pdf"];
    NSLog(@"The read path is %@", path1);
    if ([[NSFileManager defaultManager] fileExistsAtPath:path1])
    {
        //File exists
        NSData *file1 = [[NSData alloc] initWithContentsOfFile:path1];
        if (file1)
        {


        }
    }
    else
    {
        NSURL *url = [NSURL URLWithString:@"http://fzs.sve-mo.ba/sites/default/files/dokumenti-vijesti/sample.pdf"];
        NSData *urlData = [NSData dataWithContentsOfURL:url];
        NSString *path;
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Content-Directory"];
        path = [path stringByAppendingPathComponent:@"sample.pdf"];
        NSLog(@"The written path is %@", path);
        [[NSFileManager defaultManager] createFileAtPath:path
                                                contents:urlData
                                              attributes:nil];
    }
}

现在每次我尝试从文件管理器中获取文件时,文件存在的条件总是返回 FALSE。我正在写入和读取文件的路径与我在控制台上检查过的路径相同。我犯了什么错误?

【问题讨论】:

  • 发布您的代码以保存文件。
  • @Avi :它就在那里。 else 条件。
  • 检查是否写入成功?文件是否出现在沙箱中?您可以通过 Xcode 中的“设备”窗口进行检查。
  • 我认为您需要监控 createFileAtPath 函数的状态。成功或失败返回布尔值。

标签: ios objective-c xcode nsfilemanager nsdocumentdirectory


【解决方案1】:

添加这个

if (![[NSFileManager defaultManager] fileExistsAtPath:path]){[[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil];}

之后

path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Content-Directory"];

在你的 else 部分并替换

[[NSFileManager defaultManager] createFileAtPath:path contents:urlData attributes:nil];` with `[urlData writeToFile:path atomically:YES];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    相关资源
    最近更新 更多