2011-01-24 33 views
19

我的應用程序導航爲基礎。用於筆記UIViewController的UItextView。我正在寫入文件的數據。現在我需要在追加模式下寫入下面的代碼,但我每次都是使用相同的文本數據寫入兩次,如果下一次要寫入文本數據,則不會追加。如何在文本文件的追加模式下編寫

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

} 

回答

29

刪除代碼

[savedString writeToFile:documentTXTPath atomically:YES]; 

以下行,剩下的代碼無一不精。反正檢查我的代碼也,

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]]; 
+0

如果刪除[savedString writeToFile:documentTXTPath atomically:YES]; 文件不是創建來寫的。 – SOF 2011-01-24 08:28:33

+2

一旦你已經存檔,它將添加追加。首先刪除文檔文件夾中的文本文件並寫入文件並檢查,文件存在或不存在於文件中。因爲我無法在文檔文件夾中看到文本文件。 – SOF 2011-01-24 10:04:02

23

試試這個它的偉大工程

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

如果文件不存在創建並寫入文件,否則它已經創建追加到結束文件的

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]]; 
} 
-1

你也可以做

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

並再次將內容寫入特定文件路徑

[content writeToFile:documentTXTPath atomically:YES encoding:NSUTF8StringEncoding error:nil];