我想要做的是編寫一個方法,當被調用將創建一個純文本文件與預寫頭(始終相同),然後定期更新該文本文件具有更多數據,直到用戶請求停止。用戶使用應用程序的每個不同時間都需要一個新的文本文件。創建,讀取和寫入從ios應用程序中的純文本文件
我很難讓應用程序在第一時間創建文本文件。任何建議,我可能需要做到這一點?
謝謝。
我想要做的是編寫一個方法,當被調用將創建一個純文本文件與預寫頭(始終相同),然後定期更新該文本文件具有更多數據,直到用戶請求停止。用戶使用應用程序的每個不同時間都需要一個新的文本文件。創建,讀取和寫入從ios應用程序中的純文本文件
我很難讓應用程序在第一時間創建文本文件。任何建議,我可能需要做到這一點?
謝謝。
看看下面的代碼,它會創建一個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];
爲什麼多個'fopen()'調用?在UNIX平臺下甚至不支持使用''a +「'模式做你想做的事情,模式標誌't'甚至不支持。提示:使用'ftell()'來查看文件當前是否爲空,並且頭文件需要被寫入。 – trojanfoe
這確實看起來像我需要使用的東西。但是如果我打電話給這種方法既要先創建文件,又要定期更新文件,那麼下次用戶使用應用程序時如何獲得唯一文件?我不知道如何使用目錄 – user3871995
謝謝,現在解決了 – user3871995
看一看[http://stackoverflow.com/questions/16872261/如何創建一個新的文本文件寫入目標的C - iPad的應用程序](如何創建一個新的文本文件寫入目標C iPad應用程序(Stackoverflow)) – PattaFeuFeu
我發現Cocoa API這樣做很難使用,所以我會恢復使用普通ol'C方法('fopen()','fwrite()','fprintf()'等)並保留'FILE *'實例變量。應該有很多關於如何在C中實現的例子,這些將很容易轉化爲Objective-C。 – trojanfoe