iphone,在沙箱中写入csv文件
Posted
技术标签:
【中文标题】iphone,在沙箱中写入csv文件【英文标题】:iphone, write csv file in sandbox 【发布时间】:2010-06-21 13:51:14 【问题描述】:我必须在我的沙盒文件中写入(在应用程序开始时)并删除内容(在应用程序结束时)带有数据流的 csv。 根据您的经验,最好的方法是什么?
编辑:
我正在尝试这个:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filename =@"test.csv";
NSString *fullPathToFile = [documentsDirectory stringByAppendingPathComponent:filename];
if(![[NSFileManager defaultManager] fileExistsAtPath: fullPathToFile])
[[NSFileManager defaultManager] createFileAtPath: fullPathToFile contents:nil attributes:nil];
NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath: fullPathToFile];
NSString *data = [NSString stringWithFormat:@"%@,%@\n", latitudine.text, longitudine.text];
[handle writeData:[data dataUsingEncoding:NSUTF8StringEncoding]];
它可以工作但是....每次调用 writedata 时我只有一行,没有附加。我想收集我的两个文本标签的所有值。
我的错误在哪里?
编辑2:
yessss,用这段代码找到解决方案:
首先我创建了这个:
- (NSString *)dataFilePath
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:@"myfile.csv"];
并在我的 viewDidLoad 中检查,如果不存在,则创建我的文件
if (![[NSFileManager defaultManager] fileExistsAtPath:[self dataFilePath]])
[[NSFileManager defaultManager] createFileAtPath: [self dataFilePath] contents:nil attributes:nil];
NSLog(@"Route creato");
在我的一种方法中,我添加了检索数据的代码并附加到我的文件中:
NSString *data = [NSString stringWithFormat:@"%@,%@ ", latitudine.text, longitudine.text];
//create my data to append
NSFileHandle *handle;
handle = [NSFileHandle fileHandleForWritingAtPath: [self dataFilePath] ];
//say to handle where's the file fo write
[handle truncateFileAtOffset:[handle seekToEndOfFile]];
//position handle cursor to the end of file
[handle writeData:[data dataUsingEncoding:NSUTF8StringEncoding]];
//write data to with the right encoding
希望这会有所帮助!
【问题讨论】:
【参考方案1】:如果你把它放在 NSTemporaryDirectory() 中,我认为它应该在应用退出时被清理——如果是这种情况,可能值得检查。
【讨论】:
您仍然应该自己删除它们:“当您的应用程序确定不再需要文件时,应该从该目录中删除文件。”来自docs 好的,谢谢大家。使用 csv 的更好方法是 nsfilehandle?我现在正在检查这个文档。以上是关于iphone,在沙箱中写入csv文件的主要内容,如果未能解决你的问题,请参考以下文章