一個比較簡單的程序,沒有用多少東西,只是想知道一下會不會出結果而以。

累是挺累的,不過還是感覺很有激情!
寫這個讀mp3文件ID3V1的一點信息的,感覺不錯!
最近在用 Swing 寫一個MP3文件根據標簽信息重命名的程序,這么一聽的話感覺似乎不是很難,但實際過程中卻碰到了很多問題,都有待于我一個一個去解決!
這次在尋找幫助時有一個犯了個很大的毛病就是沒有把一些好的文章存或者是鏈接下來。
別的先不說的,先把讀MP3文件頭部信息的程序貼出來:

讀 MP3 文件的頭信息(ID3V1)(圖一)讀 MP3 文件的頭信息(ID3V1)(圖二)/**//**
讀 MP3 文件的頭信息(ID3V1)(圖三) * Created on 2005-8-6 5:10:29
讀 MP3 文件的頭信息(ID3V1)(圖三) * @author 糊涂鬼
讀 MP3 文件的頭信息(ID3V1)(圖四) */
讀 MP3 文件的頭信息(ID3V1)(圖一)讀 MP3 文件的頭信息(ID3V1)(圖二)public class ReadMp3ID3v1Info 讀 MP3 文件的頭信息(ID3V1)(圖五){
讀 MP3 文件的頭信息(ID3V1)(圖三)    PRivate static final int TAG_SIZE = 128;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int TITLE_SIZE = 30;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int ARTIST_SIZE = 30;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int ALBUM_SIZE = 30;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int YEAR_SIZE = 4;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int COMMENT_SIZE = 29;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int TRACK_LOCATION = 126;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int GENRE_LOCATION = 127;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int MAX_GENRE = 255;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int MAX_TRACK = 255;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final String ENC_TYPE = "Cp437";
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final String TAG_START = "TAG";
讀 MP3 文件的頭信息(ID3V1)(圖三)    
讀 MP3 文件的頭信息(ID3V1)(圖六)讀 MP3 文件的頭信息(ID3V1)(圖七)    public static void main(String[] args)讀 MP3 文件的頭信息(ID3V1)(圖五){
讀 MP3 文件的頭信息(ID3V1)(圖六)讀 MP3 文件的頭信息(ID3V1)(圖七)        try 讀 MP3 文件的頭信息(ID3V1)(圖五){
讀 MP3 文件的頭信息(ID3V1)(圖三)            File mp3 = new File("F:/音樂/MP3/英文女歌手/Madonna - Music.mp3");
讀 MP3 文件的頭信息(ID3V1)(圖三)            RandomaccessFile raf = new RandomAccessFile( mp3, "r" );
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf.seek(raf.length() - TAG_SIZE);
讀 MP3 文件的頭信息(ID3V1)(圖三)            byte[] buf = new byte[TAG_SIZE];
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf.read(buf, 0, TAG_SIZE);
讀 MP3 文件的頭信息(ID3V1)(圖三)            String tag = new String(buf, 0, TAG_SIZE, "Cp437");
讀 MP3 文件的頭信息(ID3V1)(圖三)            int start = TAG_START.length();
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("文件名:  " + mp3.getName());
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("標題  : " + tag.substring(start, start += TITLE_SIZE).trim());
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("藝術家: " + tag.substring(start, start += ARTIST_SIZE).trim());
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf.close();
讀 MP3 文件的頭信息(ID3V1)(圖三)            
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("====================================");
讀 MP3 文件的頭信息(ID3V1)(圖三)
讀 MP3 文件的頭信息(ID3V1)(圖三)            File mp32 = new File("F:/音樂/MP3/英文組合/blue - you make me wanna.mp3");
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf = new RandomAccessFile( mp32, "r" );
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf.seek(raf.length() - 128);
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf.read(buf, 0, 128);
讀 MP3 文件的頭信息(ID3V1)(圖三)            tag = new String(buf, 0, 128, "Cp437");
讀 MP3 文件的頭信息(ID3V1)(圖三)            start = TAG_START.length();
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("文件名:  " + mp32.getName());
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("標題  : " + tag.substring(start, start += 30).trim());
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("藝術家: " + tag.substring(start, start += 30).trim());
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf.close();
讀 MP3 文件的頭信息(ID3V1)(圖六)讀 MP3 文件的頭信息(ID3V1)(圖七)        } catch (Exception e) 讀 MP3 文件的頭信息(ID3V1)(圖五){
讀 MP3 文件的頭信息(ID3V1)(圖八)        }
讀 MP3 文件的頭信息(ID3V1)(圖八)    }
讀 MP3 文件的頭信息(ID3V1)(圖四)}

讀 MP3 文件的頭信息(ID3V1)(圖一)讀 MP3 文件的頭信息(ID3V1)(圖二)/**//**
讀 MP3 文件的頭信息(ID3V1)(圖三) * Created on 2005-8-6 5:10:29
讀 MP3 文件的頭信息(ID3V1)(圖三) * @author 糊涂鬼
讀 MP3 文件的頭信息(ID3V1)(圖四) */
讀 MP3 文件的頭信息(ID3V1)(圖一)讀 MP3 文件的頭信息(ID3V1)(圖二)public class ReadMp3ID3v1Info 讀 MP3 文件的頭信息(ID3V1)(圖五){
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int TAG_SIZE = 128;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int TITLE_SIZE = 30;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int ARTIST_SIZE = 30;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int ALBUM_SIZE = 30;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int YEAR_SIZE = 4;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int COMMENT_SIZE = 29;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int TRACK_LOCATION = 126;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int GENRE_LOCATION = 127;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int MAX_GENRE = 255;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final int MAX_TRACK = 255;
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final String ENC_TYPE = "Cp437";
讀 MP3 文件的頭信息(ID3V1)(圖三)    private static final String TAG_START = "TAG";
讀 MP3 文件的頭信息(ID3V1)(圖三)    
讀 MP3 文件的頭信息(ID3V1)(圖六)讀 MP3 文件的頭信息(ID3V1)(圖七)    public static void main(String[] args)讀 MP3 文件的頭信息(ID3V1)(圖五){
讀 MP3 文件的頭信息(ID3V1)(圖六)讀 MP3 文件的頭信息(ID3V1)(圖七)        try 讀 MP3 文件的頭信息(ID3V1)(圖五){
讀 MP3 文件的頭信息(ID3V1)(圖三)            File mp3 = new File("F:/音樂/MP3/英文女歌手/Madonna - Music.mp3");
讀 MP3 文件的頭信息(ID3V1)(圖三)            RandomAccessFile raf = new RandomAccessFile( mp3, "r" );
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf.seek(raf.length() - TAG_SIZE);
讀 MP3 文件的頭信息(ID3V1)(圖三)            byte[] buf = new byte[TAG_SIZE];
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf.read(buf, 0, TAG_SIZE);
讀 MP3 文件的頭信息(ID3V1)(圖三)            String tag = new String(buf, 0, TAG_SIZE, "Cp437");
讀 MP3 文件的頭信息(ID3V1)(圖三)            int start = TAG_START.length();
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("文件名:  " + mp3.getName());
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("標題  : " + tag.substring(start, start += TITLE_SIZE).trim());
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("藝術家: " + tag.substring(start, start += ARTIST_SIZE).trim());
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf.close();
讀 MP3 文件的頭信息(ID3V1)(圖三)            
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("====================================");
讀 MP3 文件的頭信息(ID3V1)(圖三)
讀 MP3 文件的頭信息(ID3V1)(圖三)            File mp32 = new File("F:/音樂/MP3/英文組合/blue - you make me wanna.mp3");
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf = new RandomAccessFile( mp32, "r" );
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf.seek(raf.length() - 128);
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf.read(buf, 0, 128);
讀 MP3 文件的頭信息(ID3V1)(圖三)            tag = new String(buf, 0, 128, "Cp437");
讀 MP3 文件的頭信息(ID3V1)(圖三)            start = TAG_START.length();
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("文件名:  " + mp32.getName());
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("標題  : " + tag.substring(start, start += 30).trim());
讀 MP3 文件的頭信息(ID3V1)(圖三)            System.out.println("藝術家: " + tag.substring(start, start += 30).trim());
讀 MP3 文件的頭信息(ID3V1)(圖三)            raf.close();
讀 MP3 文件的頭信息(ID3V1)(圖六)讀 MP3 文件的頭信息(ID3V1)(圖七)        } catch (Exception e) 讀 MP3 文件的頭信息(ID3V1)(圖五){
讀 MP3 文件的頭信息(ID3V1)(圖八)        }
讀 MP3 文件的頭信息(ID3V1)(圖八)    }
讀 MP3 文件的頭信息(ID3V1)(圖四)}