合并mp3, vector,Enumeration,SequenceInputStream,FileFilter,匿名内部类.

9/6/2015来源:Java教程人气:1541

合并mp3, vector,Enumeration,SequenceInputStream,FileFilter,匿名内部类.
 1 package test; 2  3 import java.io.*; 4 import java.util.*; 5  6 public class Test20 7 { 8     public static void main(String[] args) throws Exception 9     {10         // 从给定目录 搜索MP311         File dir = new File("D:/aaa");12         List<File> list = new ArrayList<File>();13         FileFilter filefilter = new FileFilter()14         {15             public boolean accept(File pathname)16             {17                 if (pathname.getName().endsWith(".mp3"))18                     return true;19                 if (pathname.isDirectory())20                     return true;21                 else22                     return false;23             }24         };25         method(dir.listFiles(filefilter), list, filefilter);//list里装mp326         doSequence(list);//合并 MP327     }28     PRivate static void doSequence(List<File> list) throws Exception29     {30         Vector<InputStream> vector = new Vector<InputStream>();31         for (File f : list)32         {33             vector.addElement(new FileInputStream(f));34         }35         Enumeration<InputStream> e = vector.elements();36         SequenceInputStream sis = new SequenceInputStream(e);37         BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:/hebing.mp3"));38         int len = 0;39         for (byte[] buf = new byte[1024 * 1024]; (len = sis.read(buf)) != -1;)40         {41             bos.write(buf, 0, len);42             bos.flush();43         }44         sis.close(); // 这个相当于 3个 fis的close();45         bos.close();46     }47     public static void method(File[] files, List<File> list, FileFilter filefilter)48     {49         for (File f : files)50         {51             if (f.isDirectory())52                 method(f.listFiles(filefilter), list, filefilter);53             else54                 list.add(f);55         }56     }57 }