简介
我想打开一个txt文件,并在文件的开头添加一行新文本。然后我想保存文件是一个.js文件。我写了一些代码,但它似乎覆盖了原始文本而不是添加新行。此外,我不知道如何将文件保存为.js文件..有什么我需要转换的吗?
代码
NSString* content = @"test";
NSString* filepath = [[NSBundle mainBundle] pathForResource: @"main" ofType: @"txt"];
NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:filepath];
if (fileHandle){
//[fileHandle seekToEndOfFile];
[fileHandle writeData:[content dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandle closeFile];
}
else{
[content writeToFile:filepath
atomically:NO
encoding:NSStringEncodingConversionAllowLossy
error:nil];
}
NSArray* data = [[NSString stringWithContentsOfFile:filepath encoding:4 error:nil] componentsSeparatedByCharactersInSet: [NSCharacterSet newlineCharacterSet]];
NSLog(@"%@",[data objectAtIndex:0]);
main.txt中的文字
ABCDEFGHIJKLMNOPQRSTUVWXYZ
日志
2014-07-25 15:33:00.631 App1.0 [4125:a0b] testEFGHIJKLMNOPQRSTUVWXYZ
答案 0 :(得分:0)
我要告诉你的可能有点贵,但这是我现在能想到的最好的事情。 我会这样做
NSString *path = [[NSBundle mainBundle] pathForResource:@"text" ofType:@"txt"];
NSFileHandle *filehandle = [NSFileHandle fileHandleForWritingAtPath:path];
NSString *towrite = @"test";
// get the actual content
NSData *original = [NSMutableData dataWithContentsOfFile:path];
// create a mutable data instance which starts with the string you want to put at the top
NSMutableData *complete = [[towrite dataUsingEncoding:NSUTF8StringEncoding] mutableCopy];
// than you append the original
[complete appendData:original];
// and write the data as you already know how
[filehandle writeData:complete];
NSArray* data = [[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil] componentsSeparatedByCharactersInSet: [NSCharacterSet newlineCharacterSet]];
NSLog(@"%@",[data objectAtIndex:0]);
这将打印:
testABCDEFGHIJKLMNOPQRSTUVWXYZ
测试自己并且正在工作。
希望它有所帮助。
P.S。当谈到真正庞大的文件时,它可能有点过于昂贵。
对于你问题的第二部分,我会这样做:
获取要写入的文件路径,添加扩展名.js
然后做类似的事情:
[complete writeToFile:pathToFileWithJSExtension];
希望有所帮助