So schreiben Sie im Append -Modus für eine Textdatei
-
23-10-2019 - |
Frage
Meine Anwendungsnavigation basiert. UitextView für Notizen uiViewController. Ich schreibe Daten für Text zur Datei. Jetzt muss ich im Append -Modus, den folgenden Code, den ich versuche, schreiben, aber jedes Mal, dass er zwei Zeit mit denselben Textdaten schreibt und nicht angemeldet ist, wenn nächste Textdaten zu Dateien sind.
- (void)saveText:(id)sender
{
[self.textview resignFirstResponder];
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [documentPaths objectAtIndex:0];
NSString *documentTXTPath = [documentsDirectory stringByAppendingPathComponent:@"Notes.txt"];
NSString *savedString = textview.text;
[savedString writeToFile:documentTXTPath atomically:YES];
NSFileHandle *myHandle = [NSFileHandle fileHandleForUpdatingAtPath:documentTXTPath ];
[myHandle seekToEndOfFile];
[myHandle writeData: [savedString dataUsingEncoding:NSUTF8StringEncoding]];
[myHandle closeFile];
}
Lösung
Entfernen Sie die folgende Codezeile
[savedString writeToFile:documentTXTPath atomically:YES];
Und der verbleibende Code ist alles in Ordnung. Wie auch immer, überprüfen Sie auch meinen Code,
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *documentTXTPath = [documentsDirectory stringByAppendingPathComponent:@"Notes.txt"];
NSString *savedString = textview.text;
NSFileHandle *myHandle = [NSFileHandle fileHandleForWritingAtPath:documentTXTPath];
[myHandle seekToEndOfFile];
[myHandle writeData:[savedString dataUsingEncoding:NSUTF8StringEncoding]];
Andere Tipps
Probieren Sie dies aus, es funktioniert großartig
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *documentTXTPath = [documentsDirectory stringByAppendingPathComponent:@"Notes.txt"];
NSString *savedString = textview.text;
Wenn keine Datei vorliegt, erstellen Sie sie und schreiben Sie in Datei oder sie erstellt bereits angehängt zum Ende der Datei
NSFileManager *fileManager = [NSFileManager defaultManager];
if(![fileManager fileExistsAtPath:documentTXTPath])
{
[savedString writeToFile:documentTXTPath atomically:YES];
}
else
{
NSFileHandle *myHandle = [NSFileHandle fileHandleForWritingAtPath:documentTXTPath];
[myHandle seekToEndOfFile];
[myHandle writeData:[savedString dataUsingEncoding:NSUTF8StringEncoding]];
}
Sie können es auch tun
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *documentTXTPath = [documentsDirectory stringByAppendingPathComponent:@"Notes.text"];
NSString *content = [NSString stringWithContentsOfFile:documentTXTPath encoding:NSUTF8StringEncoding error:nil];
content = [content stringByAppendingString:data];
Und schreiben Sie erneut Inhalte auf einen bestimmten Dateipfad
[content writeToFile:documentTXTPath atomically:YES encoding:NSUTF8StringEncoding error:nil];