MP3ファイルを分割するプログラムを以下に示す
・注意点
1.バッファのサイズを40MBにするとメモリ不足の例外でプログラムが止まる
2.800MBのサイズの分割に要する時間は約2分
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; public class Main { /**ファイル名 */ private static final String AUDIO_PATH = "C:\\split\\今日は1日アニソン三昧20081231_.mp3"; /**ストリームから読み込むバッファサイズ */ private static final int DATA_BUF = 1024*1024*10; public static void main(String[] args) throws Exception{ //mp3ファイルの取得 File file = new File(AUDIO_PATH); //mp3ファイル名の取得 String fileName = file.getName(); //入力ストリームの生成 InputStream in = new FileInputStream(file); //分割するバッファの生成(1MB) byte buf[] = new byte[DATA_BUF]; //ストリームからファイルを読み込む int eof = in.read(buf); //出力ストリームの生成 FileOutputStream out = new FileOutputStream( new File("C:\\split\\"+fileName.replaceAll(".mp3", "00.mp3"))); //入力ストリームから取得したデータを出力ストリームへ書き込む out.write(buf); //出力ストリームを閉じる out.close(); //入力ストリームが終わりに達しているのならプログラムを終了する if(eof==-1){ in.close(); return; }else{ buf = new byte[DATA_BUF]; } int i=1; //入力ストリームの終わりまでデータを読み込み、出力ストリームに書き込む while((eof = in.read(buf))!=-1){ String index = (i<10)?"0"+i:i+""; out = new FileOutputStream( new File("C:\\split\\"+fileName.replaceAll(".mp3", index+".mp3"))); out.write(buf); i++; buf = new byte[DATA_BUF]; } in.close(); } }
1.バッファのサイズを40MBにするとメモリ不足の例外でプログラムが止まる
2.800MBのサイズの分割に要する時間は約2分
上記プログラムで分割したMP3もちゃんとプレイヤーで再生できることを確認しています
MP3って実は余計なデータが入っていない純粋な音楽フォーマットだったりします