1

私はIOSプログラミングが初めてです。いくつかのデータをファイルに書き込みたい。ドキュメントパスのファイルを正常に開きました。しかし、fwriteは期待どおりに機能しません。ファイルを開くと、空です。私が使用している私のコードです。私が間違っていること。

 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;

誰が私が間違っているのか教えてください。

4

4 に答える 4

3

NSData、NSArray、NSDictionaryを使用できます。[writeToFile:atomically:]メソッドがあり、データをファイルに書き込むことができます。

ファイルストリームを読み書きするためにCが必要な場合は、以下の私の方法を使用できます.arrayStringをファイルに追加できます。

- (void)putArrayString:(NSString *)arrayString toFilePath:(NSString *)filePath
{
    FILE *fileStream = fopen([filePath UTF8String], "a+");

    if(fileStream == NULL)
    {
        fclose(fileStream);
        fileStream = fopen([filePath UTF8String], "w+");
        fputs([arrayString UTF8String], fileStream);
    }
    else
    {
        fputs([arrayString UTF8String], fileStream);
    }
    fclose(fileStream);
}
于 2012-07-26T11:24:16.893 に答える
3

NSDataC 関数の代わりに使用することをお勧めします。

NSData *myData = [[NSData alloc] initWithBytes:bytes length:length];
[myData writeToFile:path atomically:YES];
于 2012-07-26T09:52:05.450 に答える
0

開くモードを変更し、書き込みと読み取りが適切に行われるようになりました。ご協力ありがとうございます。

于 2012-07-26T15:33:53.440 に答える
-1

このコードを使用できるかどうかを確認します。

https://github.com/RIKSOF/three20/blob/master/src/extThree20RemoteObject/Source/TTObjectModel.m

encodeToDocument メソッドから読み取りを開始します。オブジェクトのすべてのプロパティを JSON または XML ファイルに書き込みます。

プロパティを持つこのクラスのサブクラスは、適切に書き戻されます。

于 2012-07-26T10:14:20.590 に答える