如何成功从mp3文件中返回元数据,同时避免出现空指针异常

问题描述:

当我尝试运行采用元数据并从mp3文件打印它的程序时,返回的是“Exception in thread”main “project.mp3MetaData.main(musicdj.java:18)”的java.lang.NullPointerException异常。对于这个类你需要jid3lib jar。如何避免此异常,并且是否需要通过底部标记传递任何变量?如何成功从mp3文件中返回元数据,同时避免出现空指针异常

package 1234; 

import java.io.File; 
import java.io.IOException; 

import org.farng.mp3.MP3File; 
import org.farng.mp3.TagException; 
import org.farng.mp3.id3.ID3v1; 

public class mp3MetaData { 

public static void main(String[] args) throws IOException, TagException { 

    // TODO Auto-generated method stub 
    File sourceFile = new  File("/Users/JohnSmith/Desktop/MusicTester/1234.mp3"); 
    MP3File mp3file = new MP3File(sourceFile); 
    ID3v1 tag = mp3file.getID3v1Tag(); 
    System.out.println(tag.getAlbum()); 
    System.out.println(tag.getAlbumTitle()); 
    System.out.println(tag.getTitle()); 
    System.out.println(tag.getComment()); 


} 

} 

任何帮助将不胜感激。

您的MP3文件可能不包含ID3标记。因此,在使用之前,请检查tag是否为null。类似这样的:

public static void main(String[] args) throws IOException, TagException 
{ 
    File sourceFile = new File("/Users/JohnSmith/Desktop/MusicTester/1234.mp3"); 
    final MP3File mp3file = new MP3File(sourceFile); 
    final ID3v1 tag = mp3file.getID3v1Tag(); 
    if (null == tag) 
    { 
     System.out.println("No ID3 tag found!"); 
    } 
    else 
    { 
     System.out.println(tag.getAlbum()); 
     System.out.println(tag.getAlbumTitle()); 
     System.out.println(tag.getTitle()); 
     System.out.println(tag.getComment()); 
    } 
} 
+0

谢谢!该文件不包含id3标签,所以现在我不必处理错误。 –