mp3合并.

 1 package test;
 2 
 3 import java.io.*;
 4 import java.util.*;
 5 
 6 public class Test6
 7 {
 8     public static void main(String[] args) throws Exception
 9     {
10         String s = "D:/out.mp3"; // 输出目录 & 文件名
11         List<String> list = new ArrayList<String>();
12         File dir = new File("D:/aaa"); // 要遍历的目录, 用递归拿文件,文件太多就完蛋.
13         recursion(dir.listFiles(), list); // 递归函数
14         String[] ss = new String[list.size()];
15         for (int i = 0; i < ss.length; i++)
16         {
17             ss[i] = list.get(i);
18         }
19         System.out.println();
20         combine(s, ss);
21     }
22     public static void recursion(File[] fs, List<String> list) // 递归得所有子目录的.mp3文件.
23     {
24         for (File f : fs)
25         {
26             if (f.isDirectory())
27             {
28                 recursion(f.listFiles(), list);
29             }
30             else
31             {
32                 if (f.getName().endsWith(".mp3"))
33                 {
34                     list.add(f.getAbsolutePath());
35                 }
36             }
37         }
38     }
39     private static boolean combine(String outFile, String[] inFiles) throws Exception
40     {
41         File out = new File(outFile);
42         File[] files = new File[inFiles.length];
43         for (int i = 0; i < files.length; i++)
44         {
45             files[i] = new File(inFiles[i]);
46         }
47         FileInputStream fis = null;
48         FileOutputStream fos = new FileOutputStream(outFile, true); // 合并其实就是文件的续写,写成true
49         for (int i = 0; i < files.length; i++)
50         {
51             fis = new FileInputStream(files[i]);
52             int len = 0;
53             for (byte[] buf = new byte[1024 * 1024]; (len = fis.read(buf)) != -1;)
54             {
55                 fos.write(buf, 0, len);
56             }
57         }
58         fis.close();
59         fos.close();
60         return true;
61     }
62 }

 

posted @ 2014-10-23 21:29  testman00  阅读(176)  评论(0编辑  收藏  举报