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 }