簡體   English   中英

如何在IOS中寫入文件

[英]How to write a file in IOS

我是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;

有人告訴我我在做什么錯嗎?

我建議您使用NSData而不是C函數。

NSData *myData = [[NSData alloc] initWithBytes:bytes length:length];
[myData writeToFile:path atomically:YES];

您可以使用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);
}

查看是否可以使用以下代碼:

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

開始從encodeToDocument方法讀取。 它將對象的所有屬性寫入JSON或XML文件。

此類的任何具有任何屬性的子類都將被正確寫回。

我已經更改了現在可以正確打開a +書寫和閱讀的模式。 感謝你的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM