如何搜索mp3文件的目录并按艺术家过滤结果?

时间:2013-03-30 21:38:40

标签: java directory mp3 metadata

我正试图找出如何在某位艺术家的电脑上列出音乐。我知道如何列出目录中的所有音乐,但我找不到只显示其中一位艺术家的音乐的方法。下面是我用来列出目录中所有音乐的代码。

如何搜索元数据中的艺术家姓名并过滤这些文件?如果这不是列出文件的好方法,请随意评论代码,我对这一切都很陌生。

代码片段:

File musicList = new File("C:\\Users\\Music");
String[] fileNames = musicList.list();
String songsResponse = "";

int number = 1;
for(int i = 0; i < fileNames.length; i++)
{
    if(fileNames[i].endsWith(".mp3"))
    {
        songsResponse += (number + ". ") + fileNames[i] + "\n";
        number++;
    }
}

2 个答案:

答案 0 :(得分:2)

看看Jaudiotagger

  
      
  • 支持MP3 ID3v1,ID3v11,ID3v2.2,v2.3和v2.4是透明的
  •   

答案 1 :(得分:2)

你也可以尝试Java ID3 Tag Library,它支持ID3v1,ID3v1.1,Lyrics3v1,Lyrics3v2,ID3v2.2,ID3v2.3和ID3v2.4标签以及阅读MP3帧标题:

private void printArtistFromMp3() {
    final String DIRECTORY = "C:\\Freek\\Dropbox\\Freek\\Muziek\\Queens of the Stone Age\\2000 - R\\";
    try {
        final MP3File mp3File = new MP3File(DIRECTORY + "01-Feel good hit of the summer.mp3");
        if (mp3File.hasID3v1Tag())
            System.out.println("Artist (ID3v1 tag): " + mp3File.getID3v1Tag().getArtist());
        if (mp3File.hasID3v2Tag())
            System.out.println("Lead artist (ID3v2 tag): " + mp3File.getID3v2Tag().getLeadArtist());
    } catch (IOException e) {
        e.printStackTrace();
    } catch (TagException e) {
        e.printStackTrace();
    }
}

以上代码在我的笔记本电脑上印有“首席艺术家(ID3v2标签):石器时代的皇后”。