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 }