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文件的主要内容,如果未能解决你的问题,请参考以下文章

在R语言 中如何把list对象逐行写入csv文件中

如何用python将九九乘法表写入csv文件中?

在 Python 中读取和写入 CSV 文件

python 如何将数据写入某个csv文件的特定位置?

如何在犰狳 csv 文件中写入标题?

无法在火花中写入 csv 文件