簡體   English   中英

如何使用NSFileHandle將數據插入文本文件

[英]How to insert data to text file with using NSFileHandle

我的代碼替換了文本,而不是從5個符號開始插入文本:

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

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

有什么方法可以將數據插入文本文件?

那是因為您的代碼將索引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];

好吧,這可能不是一種有效的方法,但是您可以將整個文本文件讀取到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];

在順序文件中的某處插入數據將需要重寫整個文件。 但是,可以在不重寫文件的情況下將數據添加到文件的末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM