Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 已编辑的ID3标记未显示在windows资源管理器中_Java_Api_Mp3_Id3 - Fatal编程技术网

Java 已编辑的ID3标记未显示在windows资源管理器中

Java 已编辑的ID3标记未显示在windows资源管理器中,java,api,mp3,id3,Java,Api,Mp3,Id3,我正在编写一个程序,查看mp3文件并检查它是否有ID3数据。如果某些数据丢失,它将查询EchoNest音乐数据库以获取更多数据 我的问题是,当我更新ID3标签时,Windows资源管理器似乎无法识别它,即当文件位于“详细信息”视图中时,艺术家、标题、相册列为空白。 当我在文件上第二次运行我的程序时,我的程序会找到元数据,就像它在一个一开始包含所有数据的文件中一样 我使用的ID3标记库位于以下位置: 我有什么遗漏吗 public void writeData(boolean pForce) {

我正在编写一个程序,查看mp3文件并检查它是否有ID3数据。如果某些数据丢失,它将查询EchoNest音乐数据库以获取更多数据

我的问题是,当我更新ID3标签时,Windows资源管理器似乎无法识别它,即当文件位于“详细信息”视图中时,艺术家、标题、相册列为空白。 当我在文件上第二次运行我的程序时,我的程序会找到元数据,就像它在一个一开始包含所有数据的文件中一样

我使用的ID3标记库位于以下位置:

我有什么遗漏吗

public void writeData(boolean pForce)
{
    if (mIsUpdated || pForce)
    {
         try 
         {
             File file = new File(mPath);
             RandomAccessFile destFile = new RandomAccessFile(file, "rw");
             ID3v1 tag = new ID3v1();
             tag.setAlbum(mAlbum);
             tag.setArtist(mArtist);
             tag.setTitle(mTitle);
             tag.write(destFile);
         } 
         catch (FileNotFoundException ex) 
         {
             System.out.println("No File Found At " + mPath);
         } 
         catch (IOException ex) 
         { 
             System.out.println("Error when writting to file: " + mPath);
         }
     }         
}

作为一个不知道的人,我知道有一些程序可以做同样的事情,但我想把它作为我的程序的一个功能来添加。与其说是关于功能,不如说是关于学习如何制作一个能做到这一点的程序。

您是否尝试过使用ID3v2标记,因为当我在windows中从音乐文件中读取该库的标记时,似乎只有v2有效。希望能有帮助

编辑: 如果这不起作用,我在另一个网站上发现了这个:图片与相册艺术作品有关

Mp3File song = new Mp3File(filename);
if (song.hasId3v2Tag()){
   ID3v2 id3v2tag = song.getId3v2Tag();
   byte[] imageData = id3v2tag.getAlbumImage();
   //converting the bytes to an image
   BufferedImage img = ImageIO.read(new ByteArrayInputStream(imageData));
}