2014-07-24 87 views
1

我想要做的是編寫一個方法,當被調用將創建一個純文本文件與預寫頭(始終相同),然後定期更新該文本文件具有更多數據,直到用戶請求停止。用戶使用應用程序的每個不同時間都需要一個新的文本文件。創建,讀取和寫入從ios應用程序中的純文本文件

我很難讓應用程序在第一時間創建文本文件。任何建議,我可能需要做到這一點?

謝謝。

+1

看一看[http://stackoverflow.com/questions/16872261/如何創建一個新的文本文件寫入目標的C - iPad的應用程序](如何創建一個新的文本文件寫入目標C iPad應用程序(Stackoverflow)) – PattaFeuFeu

+0

我發現Cocoa API這樣做很難使用,所以我會恢復使用普通ol'C方法('fopen()','fwrite()','fprintf()'等)並保留'FILE *'實例變量。應該有很多關於如何在C中實現的例子,這些將很容易轉化爲Objective-C。 – trojanfoe

回答

1

看看下面的代碼,它會創建一個CSV文件。這正是你需要的。如果文件不存在,它將創建一個新文件並首先寫入標題,否則只需寫入日誌文本。

- (void)log:(NSString *)msg { 

    NSString *fileName = [self logFilePath]; 

    // if new file the add headers 
    FILE *file = fopen([fileName UTF8String], "r"); 
    if (file == NULL) { 
     file = fopen([fileName UTF8String], "at"); 
     fprintf(file, "%s\n", "Date, Time, Latitude, Longitude, Speed, info"); 
    } else { 
     fclose(file); 
     file = fopen([fileName UTF8String], "at"); 
    } 
    fprintf(file, "%s\n", [msg UTF8String]); 
    fclose(file); 
} 

您應該創建文件的目錄文件,下面的代碼演示如何獲取路徑文件目錄

NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
+0

爲什麼多個'fopen()'調用?在UNIX平臺下甚至不支持使用''a +「'模式做你想做的事情,模式標誌't'甚至不支持。提示:使用'ftell()'來查看文件當前是否爲空,並且頭文件需要被寫入。 – trojanfoe

+0

這確實看起來像我需要使用的東西。但是如果我打電話給這種方法既要先創建文件,又要定期更新文件,那麼下次用戶使用應用程序時如何獲得唯一文件?我不知道如何使用目錄 – user3871995

+0

謝謝,現在解決了 – user3871995

相關問題