我的代码替换文本而不是从 5 符号开始插入:
NSFileHandle *file = [NSFileHandle fileHandleForUpdatingAtPath: filePath];
[file seekToFileOffset: 5];
[file writeData: [value dataUsingEncoding:NSUTF8StringEncoding]];
有没有办法将数据插入文本文件?
我的代码替换文本而不是从 5 符号开始插入:
NSFileHandle *file = [NSFileHandle fileHandleForUpdatingAtPath: filePath];
[file seekToFileOffset: 5];
[file writeData: [value dataUsingEncoding:NSUTF8StringEncoding]];
有没有办法将数据插入文本文件?
好吧,这可能不是一种有效的方法,但是您可以将整个文本文件读入 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];
那是因为您的代码设置了索引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];
在顺序文件中的某处插入数据需要重写整个文件。但是,可以在不重写文件的情况下将数据添加到文件的末尾。