【问题标题】:Cocoa: basic problem getting string from fileCocoa:从文件中获取字符串的基本问题
【发布时间】:2010-02-23 14:07:27
【问题描述】:

这是否有一些非常明显的原因导致生成 nil 字符串而不是文件的实际文本内容?

NSString *fromFile = [NSString stringWithContentsOfFile:
                       @"file://localhost/Users/username/Desktop/test.txt"];

NSLog(@"%@", fromFile);

PRINTS: "(null)"

该文件是从 TextWrangler 保存的纯 ASCII 文本文件,内容为“abc”。

路径来自于将实际文件从桌面拖动到 Xcode 编辑器窗口中。

我也试过不使用“file://localhost”。

方法文档说“如果无法打开文件,则返回 nil”。该文件没有任何异常(未锁定等)。它具有默认的 Unix 权限,并且由运行 Xcode 的同一用户创建。

我知道这种方法已被弃用 - 尝试先让它发挥作用。

【问题讨论】:

  • Oh guh -- 它在没有 file://localhost 部分的情况下工作 -- @"/Users/username/Desktop/testabc3.txt"。没关系:|
  • 我投票删除整个问题!
  • 对不起,你只需要像我们其他人一样忍受公众的耻辱。其他人可能会遇到同样的问题。

标签: objective-c cocoa string file


【解决方案1】:

你把stringWithContentsOfFile:stringWithContentsOfURL:搞混了。

如果您传入一个 URL,例如 @"file://localhost/Users/username/Desktop/test.txt" 你想要stringWithContentsOfURL: 并将参数设为NSURL 例如 [NSURL URLWithString:@"file://localhost/Users/username/Desktop/test.txt"]

如果你想使用stringWithContentsOfFile:,参数应该是 @"/Users/username/Desktop/test.txt"

【讨论】:

  • 奇怪的是,如果将文件本身拖到 Xcode 编辑器窗口中,Xcode 会生成“file://localhost/...”。 /Users/... 路径确实有效...谢谢。
  • 请注意,stringWithContentsOfURL 似乎也不适用于“file://localhost”——产生关于不同 Objective-C 类型 (??) 的警告。
  • 啊误读了文档 - 参数是一个 NSURL - 为此编辑 - 但是总是测试代码;(
【解决方案2】:

你试过~/Desktop/test.txt/Users/username/Desktop/test.txt吗?

【讨论】:

  • 嗯,我以为我确实有 3 次。现在确实 /Users/username/Desktop/test.txt 正在工作。但是 BTW ~/Desktop/test.txt 不起作用。
  • 您可能需要调用 NSString 的 stringByExpandingTildeInPath 方法才能使第二个工作正常,对此感到抱歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 2013-06-24
相关资源
最近更新 更多