问题描述
如题。谢谢!那位提供点关于关于专辑图片在mp3里存储的形式也好
解决方案
解决方案二:
用JAVA读取MP3文件的标签信息packagemp3;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.RandomAccessFile;publicclassReadMp3{privateSongInfoinfo=null;privateRandomAccessFileran=null;privateFilefile=null;publicReadMp3()throwsFileNotFoundException{file=newFile("./rec/感觉不到你.mp3");ran=newRandomAccessFile(file,"r");System.out.println("文件裝載完畢");}publicstaticvoidmain(String[]args)throwsIOException{ReadMp3read=newReadMp3();byte[]buffer=newbyte[128];read.ran.seek(read.ran.length()-128);read.ran.read(buffer);SongInfoinfo=newSongInfo(buffer);System.out.println("name:"+info.getSongName()+"year:"+info.getYear()+"歌手:"+info.getArtist()+"專輯名:"+info.getAlbum()+"備注:"+info.getComment());}}packagemp3;/***一个歌曲信息的类的结构表示这个歌曲是使用ID3V1的信息存储结构的**@authorhadeslee*/publicclassSongInfo{privatefinalStringTAG="TAG";//文件头1-3privateStringsongName;//歌曲名4-33privateStringartist;//歌手名34-63privateStringalbum;//专辑名61-93privateStringyear;//年94-97privateStringcomment;//备注98-125privatebyter1,r2,r3;//三个保留位126,127,128privatebooleanvalid;//是否合法publictransientStringfileName;//此歌曲对应的文件名,没有封装publicSongInfo(byte[]data){if(data.length!=128){thrownewRuntimeException("数据长度不合法:"+data.length);}Stringtag=newString(data,0,3);//只有前三个字节是TAG才处理后面的字节if(tag.equalsIgnoreCase("TAG")){valid=true;songName=newString(data,3,30).trim();artist=newString(data,33,30).trim();album=newString(data,63,30).trim();year=newString(data,93,4).trim();comment=newString(data,97,28).trim();r1=data[125];r2=data[126];r3=data[127];}else{valid=false;}}publicSongInfo(){}/***返回是否合法**@return是否*/publicbooleanisValid(){returnvalid;}/***得到此对象的128个字节的表示形式**@return*/publicbyte[]getBytes(){byte[]data=newbyte[128];System.arraycopy(TAG.getBytes(),0,data,0,3);byte[]temp=songName.getBytes();System.arraycopy(temp,0,data,3,temp.length>30?30:temp.length);temp=artist.getBytes();System.arraycopy(temp,0,data,33,temp.length>30?30:temp.length);temp=album.getBytes();System.arraycopy(temp,0,data,63,temp.length>30?30:temp.length);temp=year.getBytes();System.arraycopy(temp,0,data,93,temp.length>4?4:temp.length);temp=comment.getBytes();System.arraycopy(temp,0,data,97,temp.length>28?28:temp.length);data[125]=r1;data[126]=r2;data[127]=r3;returndata;}publicStringgetArtist(){returnartist;}publicvoidsetArtist(StringauthorName){this.artist=authorName;}publicStringgetComment(){returncomment;}publicvoidsetComment(Stringcomment){this.comment=comment;}publicbytegetR1(){returnr1;}publicvoidsetR1(byter1){this.r1=r1;}publicbytegetR2(){returnr2;}publicvoidsetR2(byter2){this.r2=r2;}publicbytegetR3(){returnr3;}publicvoidsetR3(byter3){this.r3=r3;}publicStringgetSongName(){returnsongName;}publicvoidsetSongName(StringsongName){if(songName==null){thrownewNullPointerException("歌名不能是null!");}valid=true;this.songName=songName;}publicStringgetAlbum(){returnalbum;}publicvoidsetAlbum(StringspecialName){this.album=specialName;}publicStringgetYear(){returnyear;}publicvoidsetYear(Stringyear){this.year=year;}}