将数据写入设备上的文件并从设备(iPhone)读回

时间:2012-04-15 14:07:38

标签: ios iphone nsfilehandle

在您的设备上以编程方式创建file.txt的最简单方法是什么,然后在您的应用程序中写下一些数据,然后将这些数据发送到您的计算机?

我猜最后一部分可以通过编程方式完成,就像使用计算机上的某些程序从设备获取数据一样。

直到现在我正在做这样的事情

NSFileHandle *infile;
NSFileManager *fm;
fm=[NSFileManager defaultManager];
NSString *strings=[@"/Downloads/file.txt" stringByExpandingTildeInPath];

if (![fm fileExistsAtPath:strings]) {
 [fm createFileAtPath:strings contents:nil attributes:nil];
 infile=[NSFileHandle fileHandleForWritingAtPath:strings];
 [infile writeData:[[NSString stringWithFormat:@"lalala japierdole\n", [NSDate date]] dataUsingEncoding:NSUTF8StringEncoding]];
}else {
 infile=[NSFileHandle fileHandleForWritingAtPath:strings];
 [infile seekToEndOfFile];
}
[infile writeData:[[NSString stringWithFormat:@"lulukukuioio.\n", [NSDate date]] dataUsingEncoding:NSUTF8StringEncoding]];

这只是创建文件,如果它不存在并写下一些数据,但我的路径有问题。当我在我的设备上尝试使用我的模拟器时,此代码工作正常,然后我真的不知道我是否创建该文件以及如何从以后接收它。

1 个答案:

答案 0 :(得分:6)

最简单的阅读API&将原始数据写入文件:

NSData *data = [NSData dataWithContentsOfFile:path];
[data writeToFile:path atomically:NO];

您遇到问题的原因是您的路径在设备上无效。试试这个:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
if ( paths.count > 0 )
{
  NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"file.txt"];
  NSData *data = [NSData dataWithContentsOfFile:path];
  ...
}