黑马程序员技术交流社区

标题: 关于文件合并的一点小问题 [打印本页]

作者: 一生一世    时间: 2012-5-2 18:16
标题: 关于文件合并的一点小问题
大家都知道可以用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();

        }
}
作者: 贾联国    时间: 2012-5-2 19:09
合并视频应该就是这样,只是简单的把两个文件的数据合带一起,这也和视频的编码有关,能看的也只有先传的那个数据,后进去的视频只是写进了数据,时间轴什么的都没有合并,根本接不上,所以看不了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2