| 
 
| 我在看毕老师讲基础课程关于讲文件合并流,毕老师只讲了使用vector集合合并流的方法,但是我觉得这个方法用起来比较麻烦,自己在看老师讲的基础课程后面发现 FileOutputStream(des, true);是可以将文件流继续添加的,所以使用这个方法还是可以合并文件流的,并且能够将文件合并进度和文件的大小显示出来,直接上方法代码: 复制代码        private void combineFile(File src, File des) throws IOException {
                Set<File> set = new TreeSet<File>(new MyComparator());
                File[] files = src.listFiles();
                FileOutputStream fos = new FileOutputStream(des, true);
                /**
                 * 将文件存储到集合当中, 集合是有序的, 自己写了一个排序类
                 * */
                for (File f : files) {
                        set.add(f);
                }
                long filesize = set.size() * 5; // 完成后文件大小
                double size = (100.0) / set.size(); // 每完成一次,完成的进度是多少
                double lonsize = 0; // 完成了多少进度
                /**
                 * 按照集合内存储文件的顺序取出文件的部分, 将一起整合写入到流当中去。
                 * */
                int len = -1;
                byte[] buf = new byte[1024];
                for (Iterator<File> it = set.iterator(); it.hasNext();) {
                        lonsize = lonsize + size;
                        if (lonsize > 100)
                                lonsize = 100;
                        System.out.println("-----合并度------" + (int) lonsize + " % "
                                        + "-----目标大小------" + filesize + "Mb" + "-----完成文件数------"
                                        + degree + " / " + filecount);
                        textarea.append("-----合并度------" + (int) lonsize + " % "
                                        + "-----目标大小------" + filesize + "Mb" + "-----完成文件数------"
                                        + degree + " / " + filecount+"\r\n");
                        File f = it.next();
                        FileInputStream fis = new FileInputStream(f);
                        while ((len = fis.read(buf)) != -1) {
                                fos.write(buf, 0, len - 20);
                        }
                        fis.close();
                }
                fos.close();
        }
 
 | 
 |