Java IO 合并多个二进制文件为一个二进制文件

  • 2022-07-15 22:08:54

Java IO 合并多个二进制文件为一个二进制文件

背景

  • 我最近在调用讯飞语音的API来把我的博客中的文字转成音频,
  • 讯飞语音合成有数字限制,如果超过字数限制,会合成失败.
  • 为了不超过字数限制,我把文章分割成好几部分,分别合成,
  • 然后再把这些部分合并为一个文件.
  • 讯飞合成的音频文件是.pcm文件,这是个二进制文件,

好了,废话就说到这,下面介绍如何把多个二进制文件合并为一个二进制文件.

算法描述

复制文件的算法如下:

  • 从源文件中读入一些字节到内存(字节数组)中
  • 把内存中的这些字节写到目标文件中.

多个源文件合并成一个目标文件,算法跟复制文件差不多,算法描述如下:

  • 读取第一个源文件中的内容,输出到目标文件中.
  • 然后读取第二个源文件中的内容,然后输出到目标文件中.
  • 然后读取第三个源文件中的内容,然后输出到目标文件中.
  • 依次类推,直到处理所有的源文件完成。

关键代码

// 缓存数组
byte[] buffer = new byte[2048];
// 每次读入的字节数量
int inSize = -1;
// 批量读入字节到buffer缓存中,并返回读入的自己数量给inSize
// 这里的in为输入流对象
while ((inSize = in.read(buffer)) != -1)
{
	// 把buffer缓存中的字节写入输出流(也就是目标文件)
      // 这里的out为输出流对象  
	out.write(buffer, 0, inSize);
}