Wie Schreibe ich eine Datei in IOS
Ich bin neu in der IOS-Programmierung. Ich möchte schreiben Sie einige Daten in die Datei. Ich habe erfolgreich geöffnet wurde die Datei im Dokument-Pfad. Aber fwrite seine nicht funktioniert wie erwartet. Wenn ich die Datei öffnen, die leere. Das ist mein code, den ich verwende. Was mache ich falsch.
typedef struct test {
int a;
} TEST_OBJ;
TEST_OBJ test_obj1;
test_obj1.a = 5;
TEST_OBJ *data_ptr = &test_obj1;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile1.txt"];
//This is working fine.
//[data writeToFile:appFile atomically:YES];
NSFileManager *fileManager = [[NSFileManager alloc]init];
char const *path = [fileManager fileSystemRepresentationWithPath:appFile];
FILE *fp = fopen(path, "w+b");
//This write is not working. File is empty.
int cnt = fwrite (data_ptr , 1 , sizeof(test_obj1) , fp );
fclose(fp);
fp = NULL;
Jemand pls sagen Sie mir, was ich falsch mache?
- Sie wollen einfach nur zu schreiben, was? Stick in Obj-C...gibt es bequeme Methoden auf NSString und NSData schreiben in Dateien.
- Ich bin etwas verwirrt, wie Sie schreiben, Struktur mit NSData. Können Sie mir einen Vorschlag?
- Siehe mein Kommentar unten
- Ich bin nicht sicher, dass Sie über die Berechtigung zum schreiben von Dateien in der sandbox über
fwrite(...);
...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich empfehle, verwenden Sie
NSData
anstelle von C-Funktionen.NSData *data = [NSData dataWithBytes:&test_obj1 length:sizeof(TEST_OBJ)];
writeToFile:options:error:
statt.können Sie NSData,NSArray,NSDictionary,haben Sie [writeToFile: atomar:] Methode schreiben können, die Daten in der Datei.
wenn du C Lesen und schreiben von filestream,können Sie meine Methode unten , es kann hinzufügen, arrayString der Datei .
Habe ich das geändert-Modus öffnen+ seine schreiben und Lesen nun richtig. Vielen Dank an alle für Eure Hilfe.
Sehen, ob Sie können diesen code verwenden:
https://github.com/RIKSOF/three20/blob/master/src/extThree20RemoteObject/Source/TTObjectModel.m
Starten Lesen aus dem encodeToDocument Methode. Es schreibt alle Eigenschaften eines Objekts in einer JSON-oder XML-Datei.
Jede Unterklasse dieser Klasse eine Eigenschaft ordnungsgemäß zurück geschrieben.