ID3タグの情報を取得したいのですが・・・・
指定したディレクトリ以下にある複数のMP3ファイルからID3タグの情報(アーティスト・作成年・曲名)など表示するプログラムなのですが、実行すると”引数にディレクトリを指定して”と言う表示が返されてしまいます。このプログラムのどの個所にディレクトリを指定する記述をすれば指定したディレクトリ以下のMP3ファイルからID3タグの情報を表示させることができるか教えてください。(>_<)
プログラムは大きく分けて
[ID3TagのVer1.0/1.1取得するクラス] [ID3TagのVer2.3 取得するクラス]
[ID3TagのVer1.0/1.1とVer2.3 取得クラスのスーパークラス]
[指定ディレクトリ以下のファイル一覧を取得するクラス]
[ID3TagのVer1.0/1.1とVer2.3 取得クラスを取得・保持するクラス]
[ID3Tag取得プログラムするMainクラス]
から構成されています。
<以下に示すのがMainクラスのプログラムです。>
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
public class MP3FileListMain {
/**
* @param args
* @throws UnsupportedEncodingException
*/
public static void main(String[] args) throws UnsupportedEncodingException {
if(args.length < 1) {
System.out.print("引数にディレクトリを指定して\n");
return;
}
File objFile = new File(args[0]);
if(!objFile.isDirectory()) {
System.out.print("引数に指定したのは、ディレクトリではない\n");
System.out.print("引数にディレクトリを指定して\n");
return;
}
FileList objFileList = new FileList(objFile);
long lRnt = objFileList.getFileInfo();
// System.out.print(lRnt);
try {
MP3Tag.init();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
MP3Tag.outputFiles(objFileList);
}
private static class MP3Tag {
private static long lSeriesNo_ = 0;
private static long lMaxSeriesNo_ = 0;
private static long lFileNo_ = 0;
private static long lMaxFileNo_ = 0;
private static long lTypeNo_ = 0;
private static SimpleDateFormat sdf_;
private static int handle1_;
private static int handle2s_;
private static int handle21s_;
private static int handle22s_;
private static int handle2i_;
private static int handle3s_;
private static int handle3i_;
private static int handle3u_;
private static void init() throws ClassNotFoundException {
sdf_ = new SimpleDateFormat("yyyyMMddHHmmss");
}
private static void outputFiles(FileList objFileList) {
int handle = 0;
long lSeriesNo = lSeriesNo_;
MP3File objMP3File;
ArrayList objMP3List;
// System.out.print(objFileList.getDir() + "\n");
Iterator iteMP3File = objFileList.getMP3FileIte();
while(iteMP3File.hasNext()) {
objMP3File = (MP3File)iteMP3File.next();
try {
objMP3List = objMP3File.getMP3Info();
} catch (Exception e) {
e.printStackTrace();
return;
}
try {
for(int i = 0; objMP3List.size() > i; i++) {
System.out.print(lFileNo_ + ",");
System.out.print(lTypeNo_ + ",");
System.out.print(lSeriesNo + ",");
MP3Info objMP3Info = (MP3Info)objMP3List.get(i);
System.out.print(objMP3Info.getLastModified() + ",");
System.out.print(objMP3Info.getFileSize() + ",");
System.out.print(objMP3Info.getTagVersion() + ",");
System.out.print(objMP3Info.getTrackNo() + ",");
System.out.print(objMP3Info.getTitle() + ",");
System.out.print(objMP3Info.getGenre() + ",");
System.out.print(objMP3Info.getArtist() + ",");
System.out.print(objMP3Info.getComment() + ",");
System.out.print(objMP3Info.getYear() + ",");
System.out.print(sdf_.format(new Date()) + ",");
System.out.print(objMP3Info.getPath() + ",");
System.out.print(objMP3Info.getFileName() + "\n");
}
} catch (Exception e) {
e.printStackTrace();
return;
}
lFileNo_++;
}
Iterator iteDir = objFileList.getDirIte();
while(iteDir.hasNext()) {
outputFiles((FileList)iteDir.next());
}
}
}
}
補足
回答ありがとうございます。 自分も調べていてWAVにはタグがないとの情報もあったのですが エクスプローラー等でリッピングしたWAVファイルが存在するフォルダ表示時に トラック、タイトル、アーティスト等の情報が表示される為、更に調べたところ 情報は少ないですがWAVファイルにも一応タグ情報が存在するようですので 今回の質問をさせて頂きました。