-->

如何插入数据,文本文件,使用NSFileHandle(How to insert data to t

2019-11-02 08:57发布

我的代码替换文本而不是插入它从5符号开始的:

NSFileHandle *file = [NSFileHandle fileHandleForUpdatingAtPath: filePath];
[file seekToFileOffset: 5];

[file writeData: [value dataUsingEncoding:NSUTF8StringEncoding]];

有没有什么办法将数据插入到文本文件?

Answer 1:

这是因为你的代码中设置索引position to 5 ,并从那里开始编写,因此从替代一切5起。

我将会把文件中的内容复制到一个变量,并从那里修改它作为一个string 。 由它的外观,你试图做什么是不可能的

更新:既然你需要的是从X写抵消这种应该做的伎俩

   NSFileHandle *file;
        NSMutableData *data;

        const char *bytestring = "black dog";

        data = [NSMutableData dataWithBytes:bytestring length:strlen(bytestring)];


        file = [NSFileHandle fileHandleForUpdatingAtPath: @"/tmp/quickfox.txt"];

        if (file == nil)
                NSLog(@"Failed to open file");


        [file seekToFileOffset: 10];

        [file writeData: data];

        [file closeFile];


Answer 2:

嗯,这可能不是一个有效的方法,但你可以读取整个文本文件转化成的NSMutableString,然后使用insertString:atIndex:然后把它写回。 据我知道有没有办法文本插入到现有的文件。 类似的问题

一个简单的例子:

NSString *path = //Your file
NSMutableString *contents = [NSMutableString stringWithContentsOfFile:txtFilePath encoding:NSUTF8StringEncoding error:NULL];

[contents insertString:@"Some string to insert" atIndex:5];
[contents writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL];


Answer 3:

在顺序文件的地方插入数据将要求整个文件被改写。 这是可能的,但是,将数据添加到文件末尾无需重写文件。



文章来源: How to insert data to text file with using NSFileHandle