黑马程序员技术交流社区

标题: 求大神指教,关于OC中NSString的读取文件,为什么运行总是空的 [打印本页]

作者: 离经叛道的女子    时间: 2015-7-10 23:30
标题: 求大神指教,关于OC中NSString的读取文件,为什么运行总是空的
本帖最后由 离经叛道的女子 于 2015-7-10 23:33 编辑

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
   
        NSString *s = [NSString stringWithContentsOfFile:@"/Users/xuegezhou/Desktop/ab.txt" encoding:NSUTF8StringEncoding error:nil];
        NSLog(@"s=\n%@",s);
   
    }
    return 0;
}


这是代码,同学跟我写的一模一样,但是我的Xcode运行出来就是空的 是我的Xcode出问题了吗?有知道的不,可以往桌面的文件写入,但就是读取不了

Snip20150710_1.png (161.2 KB, 下载次数: 53)

Snip20150710_1.png

作者: OUT___Man    时间: 2015-7-11 23:02
我试了试  好像也不行。。。。


作者: 离经叛道的女子    时间: 2015-7-11 23:04
OUT___Man 发表于 2015-7-11 23:02
我试了试  好像也不行。。。。

这是为什么啊   
作者: OUT___Man    时间: 2015-7-11 23:05
离经叛道的女子 发表于 2015-7-11 23:04
这是为什么啊

我也想知道 TOT
作者: lz465350    时间: 2015-7-11 23:24
我以前也遇到过这样的问题,主要还是utf8编码的问题.有的文件不是用utf8编码的,而你使用的是encoding:NSUTF8StringEncoding读取方法,因此无法读取.
1.先排除文件不存在的问题:  xuegezhou是你的账户名称吗?也就是说,你能否打开"/users/xuegezhou/desktop"这个路径?
2.若以上路径确实是存在的,则楼主运行一下以下代码试一试:
  1. #import <Foundation/Foundation.h>

  2. int main(int argc, const char * argv[]) {
  3.     @autoreleasepool {
  4.         
  5.         //1.使用utf8编码向txt文件中写入内容
  6.         [@"1234" writeToFile:@"/Users/xuegezhou/Desktop/abc.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
  7.         
  8.         //2.使用utf8编码的方式读取刚刚向文件中写入的内容.
  9.         NSString *s = [NSString stringWithContentsOfFile:@"/Users/xuegezhou/Desktop/abc.txt" encoding:NSUTF8StringEncoding error:nil];

  10.         //3.打印读取出来的文件内容
  11.         NSLog(@"s=\n%@",s);
  12.         
  13.     }
  14.     return 0;
  15. }
复制代码





作者: 离经叛道的女子    时间: 2015-7-11 23:47
lz465350 发表于 2015-7-11 23:24
我以前也遇到过这样的问题,主要还是utf8编码的问题.有的文件不是用utf8编码的,而你使用的是encoding:NSUTF8 ...

果然这样的啊  这样就对了  我还想要问下 我要是就是要读取我桌面上已经写好的文件怎么读取啊 ,不能只能读取刚写的啊
作者: lz465350    时间: 2015-7-11 23:55
你在终端里使用touch abcd.txt命令在桌面新建txt文件,打开并输入内容,可以直接用你以前的方式读取。
作者: 离经叛道的女子    时间: 2015-7-12 00:01
lz465350 发表于 2015-7-11 23:55
你在终端里使用touch abcd.txt命令在桌面新建txt文件,打开并输入内容,可以直接用你以前的方式读取。 ...

额  那就是我想读取只能新建一个咯?  有没有办法 不新建  直接读取这种不是UTF8编码的
作者: lz465350    时间: 2015-7-12 00:05
应该可以,但mj老师只交了这一种方法
作者: lz465350    时间: 2015-7-12 00:06
如果感兴趣的话,可以上网搜搜有没有别的办法
作者: 离经叛道的女子    时间: 2015-7-12 00:09
lz465350 发表于 2015-7-12 00:06
如果感兴趣的话,可以上网搜搜有没有别的办法

恩 好的 谢啦
作者: OUT___Man    时间: 2015-7-12 22:05
楼主 知道原因了么?
作者: 离经叛道的女子    时间: 2015-7-12 22:50
OUT___Man 发表于 2015-7-12 22:05
楼主 知道原因了么?

同学 看楼上回复的原因  是正确的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2