大家都知道可以用IO中的字节流可以合并文件,可是我今天下午用IO流合并了一个电影,不知道为什么把两个电影合并完以后虽然合并后的电影的容量是以前几个电影的和,但是不知道为什么电影的时间却只有原来的一部分,是不是java在合并字节流的时候有什么异常呀??下面是我改写的毕老师的代码:
import java.io.*;
import java.util.*;
class Merge{
public static void main(String args[])throws IOException{
//splitFile();
merge();
}
public static void merge()throws IOException{
ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
al.add(new FileInputStream("D:\\神马都是浮云1280BD高请上.rmvb"));
al.add(new FileInputStream("D:\\神马都是浮云1280BD高清下.rmvb"));
final Iterator<FileInputStream> it = al.iterator();
Enumeration<InputStream> en = new Enumeration<InputStream>(){
public boolean hasMoreElements(){
return it.hasNext();
}
public FileInputStream nextElement(){
return it.next();
}
};
SequenceInputStream sis = new SequenceInputStream(en);
FileOutputStream fos = new FileOutputStream("D:\\神马都是浮云.rmvb");//合并以后的电影容量上看是上面两个电影容量之和
//但是为什么从时间上看 却和《神马都是浮云1280BD高请上.rmvb》的时间一样呢??
//还有就是为什么合并以后的电影快进的时候会很卡,还没有不合并以前的电影播放时那么的流畅呢?
byte[] buf = new byte[1024*1024*10];
int b = 0;
while((b=sis.read(buf))!=-1){
fos.write(buf,0,b);
fos.flush();
}
sis.close();
fos.close();
}
} |