读取文件内容到NSString

============================================================
博文原创,转载请声明出处
电子咖啡(原id蓝岩)
============================================================

读取文件内容到NSString,我使用以下代码

 NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"push实现.txt"];   
    
    NSError* err=nil;
    NSString* mTxt=[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&err];
   
    NSLog(@"err:%@",err);
    
    NSLog(@"filePath:%@",filePath);
    NSLog(@"mTxt:%@",mTxt);

出错了,log为:

2013-05-23 12:35:36.374 Paging[26149:11303] err:Error Domain=NSCocoaErrorDomain Code=261 "The operation couldn’t be completed. (Cocoa error 261.)" UserInfo=0x8868b00 {NSFilePath=/Users/ericyang/Library/Application Support/iPhone Simulator/6.1/Applications/A3D216E7-DC10-48C3-AD40-302573D8C069/Paging.app/push实现.txt, NSStringEncoding=4}
2013-05-23 12:35:36.375 Paging[26149:11303] filePath:/Users/ericyang/Library/Application Support/iPhone Simulator/6.1/Applications/A3D216E7-DC10-48C3-AD40-302573D8C069/Paging.app/push实现.txt
2013-05-23 12:35:36.375 Paging[26149:11303] mTxt:(null)

找到原因,是编码问题,我的文件应该是GBK的,修改代码:


 NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"push实现.txt"];   
    
    unsigned long encode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);    
    NSData *responseData = [NSData dataWithContentsOfFile:filePath];
    NSString *mTxt = [[NSString alloc] initWithData:responseData encoding:encode];
    
    NSLog(@"filePath:%@",filePath);
    NSLog(@"mTxt:%@",mTxt);

ok,正常打印。


在Xcode中,如果你想要把文件打包到设备的document目录下,通常是指将应用资源文件或通过程序动态生成的文件保存到应用的Documents目录中。以下是将文件打包到设备document目录下的步骤: 1. 将要打包的文件添加到你的Xcode项目中。通常,你可以在项目的Finder视图中直接将文件拖拽到Xcode项目中相应的位置。 2. 确保在添加文件时选中了“Copy items if needed”选项,这样文件就会被复制到项目文件夹内。对于资源文件,还需要选中“Create folder references”以保持目录结构。 3. 在项目导航中选择你添加的文件,然后在File Inspector面板中设置“Target Membership”,确保你希望打包到设备上的文件被勾选在对应的目标(target)下。 4. 在应用中,你可以使用`NSSearchPathForDirectoriesInDomains`函数来获取Documents目录的路径。例如,以下代码获取了当前用户的Documents目录路径: ```objective-c NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths firstObject]; ``` 然后,你可以使用这个路径来创建、读取或写入文件: ```objective-c NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"yourFile.txt"]; // 读取文件 NSString *fileContents = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; // 写入文件 [fileContents writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil]; ``` 5. 当应用运行时,应用的Documents目录会出现在沙盒内的一个私有路径下,你可以在应用运行时对其进行读写操作。 请注意,由于iOS的安全性,应用只能访问自己的沙盒环境中的文件,无法访问其他应用或系统文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值