欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java实现mp3合并的方法

程序员文章站 2024-03-31 16:53:16
本文实例讲述了java实现mp3合并的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下: package test; import java.io....

本文实例讲述了java实现mp3合并的方法。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:

package test;

import java.io.*;
import java.util.*;

public class test6
{
    public static void main(string[] args) throws exception
    {
        string s = "d:/out.mp3"; // 输出目录 & 文件名
        list<string> list = new arraylist<string>();
        file dir = new file("d:/aaa"); // 要遍历的目录, 用递归拿文件,文件太多就完蛋.
        recursion(dir.listfiles(), list); // 递归函数
        string[] ss = new string[list.size()];
        for (int i = 0; i < ss.length; i++)
        {
            ss[i] = list.get(i);
        }
        system.out.println();
        combine(s, ss);
    }
    public static void recursion(file[] fs, list<string> list) // 递归得所有子目录的.mp3文件.
    {
        for (file f : fs)
        {
            if (f.isdirectory())
            {
                recursion(f.listfiles(), list);
            }
            else
            {
                if (f.getname().endswith(".mp3"))
                {
                    list.add(f.getabsolutepath());
                }
            }
        }
    }
    private static boolean combine(string outfile, string[] infiles) throws exception
    {
        file out = new file(outfile);
        file[] files = new file[infiles.length];
        for (int i = 0; i < files.length; i++)
        {
            files[i] = new file(infiles[i]);
        }
        fileinputstream fis = null;
        fileoutputstream fos = new fileoutputstream(outfile, true); // 合并其实就是文件的续写,写成true
        for (int i = 0; i < files.length; i++)
        {
            fis = new fileinputstream(files[i]);
            int len = 0;
            for (byte[] buf = new byte[1024 * 1024]; (len = fis.read(buf)) != -1;)
            {
                fos.write(buf, 0, len);
            }
        }
        fis.close();
        fos.close();
        return true;
    }
}

希望本文所述对大家的java程序设计有所帮助。