mp 3,vector,Enumeration,SequenceInputStream,FileFilter,匿名内部クラスをマージする.

7862 ワード

 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 }