for文について【ID3タグ取得のプログラム】
ID3タグ取得のプログラムなのですがちゃんと動いたのは良いんですが解らないプログラム部分がありました。
ググったり過去の質問探したりしたのですが解答が見つかりません。
お手数ではありますがご教授願います。
以下はプログラムです。
/*ID3タグ取得プログラム*/
import java.io.*;
import java.nio.channels.*;
import java.util.Arrays;
class TagInfo{
final private String name;
final private int pos;
final private int len;
public TagInfo(String name,int pos,int len){
this.name=name; this.pos=pos; this.len=len;
}
public String getName() {
return name;
}
public int getPos() {
return pos;
}
public int getLen() {
return len;
}
}
public class M_data {
private static byte[] copyOfRange(byte b[],int pos, int len){
byte[] a=new byte[len];
System.arraycopy(b,pos,a,0,len);
return a;
// return java.util.Arrays.copyOfRange(b,pos,pos+len);
}
static void music() throws IOException{
File file = new File("C:/music/music4.mp3");
FileInputStream fis=new FileInputStream(file);
String charsetName="Shift_JIS";
//if(1<args.length) charsetName=args[1];
FileChannel fc=fis.getChannel();
fc.position(fc.size()-128);
byte[] b=new byte[128];
if(fis.read(b)==128 && b[0]=='T' && b[1]=='A' && b[2]=='G'){
TagInfo[] infos={new TagInfo("Song title:",3,30),new TagInfo("Artist:",33,30),
new TagInfo("Album:",63,30),new TagInfo("Year:",93,4),
new TagInfo("Comment:",97,30),new TagInfo("Genre:",127,1)
};
int i=0;
/*以下のfor文です*/
for(TagInfo info: infos){
System.out.print(i + info.getName());
System.out.println(new String(copyOfRange(b,info.getPos(),info.getLen()),charsetName));
i++;
}
}
}
public static void main(String[] args) throws IOException{
music();
}
}
お礼
早々に回答くださりありがとうございます! かれこれ3日ほど考えていたのでスッキリしました。 改行コードが問題だったのですね。