当前位置: 首页 > 知识库问答 >
问题:

在Xcode 11.3中读取文档中的文件失败

利俊迈
2023-03-14

当我使用URL的内容字符串读取文档中的文件时,它失败了

这是Xcode控制台中的错误:

错误域=NSCocoaErrorDomain Code=256"无法打开文件"1.txt"。"用户信息={NSURL=/var/mobile/Containers/Data/Application/E026973D-11B6-4895-B8FE-7F9FBCC11C12/Documents/bbbb/1.txt}

这是我的代码:

 //use objective-c
 +(NSString * )loadDataFromDocumentDirectory:(NSString *)path andSubDirectory:(NSString *)subdirectory {
    path = [self stripSlashIfNeeded:path];
    subdirectory = [self stripSlashIfNeeded:subdirectory];

    // Create generic beginning to file save path
    NSMutableString *savePath = [[NSMutableString alloc] initWithFormat:@"%@/",[self applicationDocumentsDirectory].path];
    [savePath appendString:subdirectory];
    [savePath appendString:@"/"];

    // Add requested save path
    NSError *err = nil;
    [savePath appendString:path];
    NSURL *fileURL = [NSURL URLWithString:savePath];
    NSString *loadStr = [NSString stringWithContentsOfURL:fileURL encoding:NSUTF8StringEncoding error:&err]  ;
    if (err) NSLog(@"load error : %@", err);

    return loadStr;
}

//use swift
let loadData = FileSave.loadData(fromDocumentDirectory: "1.txt", andSubDirectory: "bbbb")

共有1个答案

白志勇
2023-03-14

您使用了错误的API:

URLWithString用于URL,包括必须使用的文件系统路径的方案(文件:///code>或https:///code>)。

但是,强烈建议始终使用与URL相关的API来构建路径

+ (NSString * )loadDataFromDocumentDirectory:(NSString *)path andSubDirectory:(NSString *)subdirectory {
    // path = [self stripSlashIfNeeded:path]; not needed
    // subdirectory = [self stripSlashIfNeeded:subdirectory]; not needed
    // Create generic beginning to file save path
    NSURL *saveURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:subdirectory];

    // Add requested save path
    NSError *err = nil;
    NSURL *fileURL = [saveURL URLByAppendingPathComponent:path];
    NSString *loadStr = [NSString stringWithContentsOfURL:fileURL encoding:NSUTF8StringEncoding error:&err]  ;
    if (err) NSLog(@"load error : %@", err);

    return loadStr;
}

 类似资料:
  • 问题内容: 我有一个zip存档,其中包含一堆纯文本文件。我想解析每个文本文件的数据。到目前为止,这是我写的内容: 我需要一个RandomAccessFile来做到这一点吗?我在拥有ZipInputStream的地方迷路了。 问题答案: 不,您不需要。首先获取此zip文件条目的数据: 然后将其包装为(从二进制解码为文本)和a (一次读取一行): 然后像往常一样从中读取行。像往常一样将所有适当的位包装

  • 问题内容: 我试图从战争档案中读取文本文件,并在运行时将其内容显示在facelets页面中。我的文件夹结构如下 +战争档案> +资源> +电子邮件> + file.txt 我尝试使用以下代码读取resources / email / file.txt文件夹中的文件 但是问题是当我运行上面代码的方法时,会抛出A。我也尝试使用以下代码行获取文件,但未成功 我仍然得到。这是怎么引起的,我该如何解决? 问

  • 我一直在尝试读取ZIP存档中的PHP文件。我编写了以下代码,它可以读取文本文档和回显而没有错误,但当我用PHP文件测试时,什么都没有出现。那么我可以做些什么来读取PHP文件而不提取呢? 提前感谢!

  • 我的猜测是我没有以正确的方式声明模式文档,但我不知道错误到底在哪里。我做错了什么?

  • 问题内容: 我正在尝试读取资源(asdf.txt),但是如果文件大于5000字节,例如,在content变量的末尾插入了4700个空字符。有什么办法可以删除它们?(或设置缓冲区的正确大小?) 这是代码: 问题答案: 最简单的方法是做正确的事情:使用阅读器读取文本数据: 并非 一定 要定义要读取的文本文件的编码。在上面的示例中,它将是THE_ENCODING。 请注意,您的代码和本示例代码在Java

  • 问题内容: 我需要从文件中读取内容(它们都是变量,当然不是常量)。最简单的方法是什么? 问题答案: 这个怎么样: