我正在尝试将一个非常基本的文本字符串写入我的文档目录并从那里开始工作以稍后保存其他文件等。
我目前坚持不在我的文档目录中写入任何内容
(在我的 viewDidLoad
中)
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)
NSString *documentsDirectory = [pathArray objectAtIndex:0];
NSString *textPath = [documentsDirectory stringByAppendingPathComponent:@"file1.txt"];
NSString *text = @"My cool text message";
[[NSFileManager defaultManager] createFileAtPath:textPath contents:nil attributes:nil];
[text writeToFile:textPath atomically:NO encoding:NSUTF8StringEncoding error:NULL];
NSLog(@"Text file data: %@",[[NSFileManager defaultManager] contentsAtPath:textPath]);
这是打印出来的:
2011-06-27 19:04:43.485 MyApp[5731:707] Text file data: (null)
如果我尝试这样做,它也会打印出 null:
NSLog(@"My Documents: %@", [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:NULL]);
写入此文件时我遗漏了什么或做错了什么? 可能是我需要在我的 plist 中更改某些内容或需要一些框架/导入?
谢谢
[编辑] 我通过 writeToFile 传递了一个 NSError 对象并得到了这个错误:
Error: Error Domain=NSCocoaErrorDomain Code=512 "The operation couldn’t be completed. (Cocoa error 512.)" UserInfo=0x12aa00 {NSFilePath=/var/mobile/Applications/887F4691-3B75-448F-9384-31EBF4E3B63E/Documents/file1.txt, NSUnderlyingError=0x14f6b0 "The operation couldn’t be completed. Not a directory"}
[编辑 2] 这在模拟器上运行良好,但在我的手机上运行不正常:/
最佳答案
与其使用 NSFileManager 获取该文件的内容,不如尝试使用 NSString:
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)
NSString *documentsDirectory = [pathArray objectAtIndex:0];
NSString *textPath = [documentsDirectory stringByAppendingPathComponent:@"file1.txt"];
NSError *error = nil;
NSString *str = [NSString stringWithContentsOfFile:textPath encoding:NSUTF8StringEncoding error:&error];
if (error != nil) {
NSLog(@"There was an error: %@", [error description]);
} else {
NSLog(@"Text file data: %@", str);
}
编辑:添加了错误检查代码。
关于iphone - Documents 目录中的读/写文件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6496454/