附加到文本文件的开头,然后另存为iOS的.js

时间:2014-07-25 07:40:15

标签: javascript objective-c

简介

我想打开一个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

1 个答案:

答案 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];

希望有所帮助