目前正在使用:
NSString* path = [[NSBundle mainBundle] pathForResource:@"filename"
ofType:@"txt"];
这仅在我手动将文件添加到应用程序包中后才有效。
我可以使用文件目录,但情况更糟。
重置SIM后,文件消失。我如何让它留下来?
我如何从那里的某个地方写出文件?喜欢来自源文件?我不想分配几兆字节的NSString对象。
答案 0 :(得分:2)
关于freenode irc(#iphonedev)的Lyle42:
我不知道这个领域是否存在。通过将任何文件添加到复制文件构建阶段(在构建阶段),它们将持久存在于构建中。
然后这段代码:
NSString *_filePath = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"txt"];
NSLog(@"%@",_filePath);
NSData *_binary = [NSData dataWithContentsOfFile:_filePath];
NSString *_fileContents = [[NSString alloc] initWithData:_binary encoding:NSUTF8StringEncoding];
工作得很好。 (将文件的内容加载到NSString中)。
答案 1 :(得分:1)
您可以使用它来获取文件的路径
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [documentPaths objectAtIndex:0];
filePath = [path stringByAppendingPathComponent:file_name];
您可以使用
从应用包中获取该文件NSString *pathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:file_name];
答案 2 :(得分:0)
我可以使用文档目录,但情况更糟。
不是真的。文档目录是持久性的,是应用程序创建的基本文档的推荐目录。此外,它由iTunes备份,可以指定用于iCloud备份。应用套装无法与之竞争!
重置SIM后,文件消失。我如何让它留下来?
你不能,一旦模拟器被“重置”(我的意思是对所有数据和应用程序的硬擦除),就不会保存任何内容。但是,在测试版本之间,除非您在/tmp
中存储内容,否则从应用程序包中复制的数据应该存在。此外,捆绑中的对象在构建阶段被“刷新”(重新复制),这意味着您的资源不会被清除,只是重置为项目中指定的资源。
我如何从那里的某个地方写出文件?喜欢来自 源文件?我不想分配几兆字节的NSString 对象
要将文件读入内存,最终必须变成“几兆字节的NSString”,但是如果你真的想在你的大型字符串对象的计划中添加一点IO,那么看一下{{1 }}