C 如何将二进制文件的一部分复制到新文件

C++ How To Copy Part of A Binary File To A New File?

本文关键字:新文件 文件 复制 一部分 二进制文件      更新时间:2023-10-16

我有一个长二进制文件作为函数的输入。我可以将所有数据复制到新文件,如下:

void copyBinaryFile(string file){
    const char* fileChar = file.c_str(); 
    ifstream input(fileChar, ios::binary);
    ofstream output("/home/my_name/result.img", ios::binary);
    copy(istreambuf_iterator<char>(input),
    istreambuf_iterator<char>(),
    ostreambuf_iterator<char>(output)
    );
}

这对于一次复制整个文件的功能正常,但是,我实际想做的是将第一个二进制文件的几个非连续的块写入输出文件,即。

for(int i = 0; i < chunkArray.size(); i++){
    //copy 512 bytes from file1 to file2 starting at the chunkArray[i]th character
}

我该怎么做?如果有任何区别,这是在Linux上。

  1. 使用ifstream::seekg移动文件的读取位置。
  2. 读取文件中适当的字节数。
  3. 处理文件中读取的数据。
  4. 重复直到完成为止。

for(int i = 0; i < chunkArray.size(); i++){
    //copy 512 bytes from file1 to file2 starting at the chunkArray[i]th character
   input.seekg(chunkArray[i]);
   char chunk[512];
   input.read(chunk, 512);
   // Deal with error, if there is one.
   if (!input )
   {
   }
   // Process the data.
}

似乎很简单..

让您的功能偏移到应该开始复制的来源以及许多要复制的字节中。然后从给定的起点复制许多字节。