从零开始学java之IO流 使用字节流将多个相同格式的文本、视频、音乐写到一个文件中

时间:2021-10-15 21:00:59

     如果我们有多个相同格式的文件,比如1.mp3,2.mp3,3.mp3,4.mp3,5.mp3,我们想要通过IO流将他们连起来形成一个12345.mp3,这个12345.mp3 会连续播放1.mp3,2.mp3,3.mp3,4.mp3,5.mp3里面的音乐。

   首先考虑的就是使用字节流,因为纯文本文件使用字符流还比较好用,其余的不是纯文本的文件都是使用字节流,因为硬盘上的所有文件都是以字节的形式进行传输或者保存的,包括图片等内容。

   如果是五个文件或者多个文件,我们就可以利用File[ ] file = new File[5];进行声明然后循环读取。

   具体实现如下:


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class LOL {


public static void main(String[] args) {

StringBuffer str = null;
DataInputStream bi = null;
FileInputStream fi = null;
DataOutputStream bo = null;
FileOutputStream fo = null;
File[] file = new File[5];
file[0] = new File("E:\\haha\\1.mp3");
file[1] = new File("E:\\haha\\2.mp3");
file[2] = new File("E:\\haha\\3.mp3");
file[3] = new File("E:\\haha\\4.mp3");
file[4] = new File("E:\\haha\\5.mp3");

try {
byte[] byt = null;
for(int i =0;i<file.length;i++){
fi = new FileInputStream(file[i]);
bi = new DataInputStream(fi);
int next = 0;
byt= new byte[bi.available()];
while((next=bi.read())!=-1){
bi.read(byt);

}
fo = new FileOutputStream("E:\\haha\\123.mp3",true);
bo = new DataOutputStream(fo);
bo.write(byt);
}

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {

bi.close();
bo.flush();
bo.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}


}
}