如何在文本文件的追加模式下编写

SOF*_*SOF 21 iphone uitextview nsfilehandle

我的应用导航基础.UItextView用于注释UIViewController.我正在写文本数据到文件.现在我需要写下附加模式,下面的代码我正在尝试,但每次用相同的文本数据写入两次,如果下一个文本数据到文件则不附加.

- (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];

}
Run Code Online (Sandbox Code Playgroud)

Kin*_*iss 32

删除以下代码行

[savedString writeToFile:documentTXTPath atomically:YES];
Run Code Online (Sandbox Code Playgroud)

剩下的代码都很好.无论如何也检查我的代码,

    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]];
Run Code Online (Sandbox Code Playgroud)

  • 一旦你已经存档它将添加追加.首先删除文件夹中的文本文件并写入文件并检查,文件是否存在于文件中.因为我无法在文档文件夹中看到文本文件. (2认同)

小智 27

试试这个很棒

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *documentTXTPath = [documentsDirectory stringByAppendingPathComponent:@"Notes.txt"];
NSString *savedString = textview.text;
Run Code Online (Sandbox Code Playgroud)

如果文件不存在,则创建它并写入文件,否则其已创建的附加到文件末尾

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]];
}
Run Code Online (Sandbox Code Playgroud)

  • 这是比 KingOfBliss 更好的答案,因为如果文件尚不存在,则创建该文件至关重要 (2认同)