繁体   English   中英

读写大数据到C ++中的自定义二进制文件

[英]Reading-writing large data to a custom binary file in C++

我在C ++中有一些代码将结构写入文件。 结构的格式是:

     struct dataHeader
     {
      int headerID;
      int numberOfDataLines;
      };

     struct data
     {
       double id;
       double type;
       char[100] name;
       char[100] yyy;
      };

现在,这两个结构总是成对写入,文件中包含超过50000个结构。

我的问题是有没有办法更有效地做到这一点? 文件大小是我主要关注的问题。

编辑:当前代码是循环中的简单fwrite(Psuedo-code):

   while(dataBlock.Next())
   {
          fwrite(&_dataHeader, sizeof(dataHeader), 1, fpbinary); 

          while( dataLine.Next())
          {
            fwrite(&_data[i], sizeof(data), 1, fpbinary); 
          }  
   }

谢谢。

如果数据具有相似性,则可以通过对数据进行分组来减少数据存储要求。 例如,您可以准备一个“名称”或“yyy”值的列表,并将您的数据写入组中,使得首先是名称为“Bob”的数据值,然后是“Josh”。

如果您的所有数据都是唯一的,那么您唯一的选择就是在写入文件之前压缩二进制数据,并在读取之后将其解压缩。 我建议你使用快速压缩和解压缩的QuickLZ

如果时间要求不是很高,您可以尝试压缩文件的内容。

如何使用zlib轻松压缩和解压缩文件?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM