合并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         // 从给定目录 搜索MP3
11         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                 else
22                     return false;
23             }
24         };
25         method(dir.listFiles(filefilter), list, filefilter);//list里装mp3
26         doSequence(list);//合并 MP3
27     }
28     private static void doSequence(List<File> list) throws Exception
29     {
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             else
54                 list.add(f);
55         }
56     }
57 }

 

posted @ 2014-10-25 19:38  testman00  阅读(257)  评论(0编辑  收藏  举报