2012-10-02 101 views
1

我正在使用metadata extractor API从图像中提取元数据。然后我使用Java创建一个包含所有数据的.txt文件。但是,当我运行该文件时,我有nullpointexception。创建文本文件时出错Java

我知道某些内容正在输出,因为它在NetBeans中提供的输出框中打印出来。

类创建文件:

private void metadataImageButtonMouseClicked(java.awt.event.MouseEvent evt) {             
    System.out.println(MetaData.getTags()); 
    try { 
    File report; 
    report = new File("report.txt"); 

     report.createNewFile(); 
     FileWriter kmlStream = new FileWriter("report.txt"); 
     try (BufferedWriter out = new BufferedWriter(kmlStream)) { 
      out.write(MetaData.allTags); 
      statusUpdateMessage.setText("Report file created"); 
      System.out.println("New file \"Report.txt\" has been created to the current directory"); 
     } 
    } catch (IOException ex) { 
     Logger.getLogger(MetaDataExtractor.class.getName()).log(Level.SEVERE, null, ex); 
    } 

检索所有元数据

Metadata metadata = ImageMetadataReader.readMetadata(jpegFile); 

    for (Directory directory : metadata.getDirectories()) { 
     for (Tag allTags : directory.getTags()) { 
      System.out.println(allTags); 
     } 
    } 
} catch (ImageProcessingException ex) { 
    Logger.getLogger(MetaData.class.getName()).log(Level.SEVERE, null, ex); 
} catch (IOException ex) { 
    Logger.getLogger(MetaData.class.getName()).log(Level.SEVERE, null, ex); 
} 
return allTags; 

我首先想到的是有返回类型为字符串,但它不会让我做。欢迎任何建议,因为我对Java不够强大。 Here are the errors

在此先感谢。

回答

1

通过阅读JDK自带的java.io.Writer的源代码,您可以推断出您正在向Writer写入空字符串,并导致NullPointerException。这发生在MetaDataExtractor.metadataImageButtonMouseClicked(),文件MetaDataExtractor.java在行541.

在写入它们之前检查您的字符串是否为空。

1

这里是你的错误跟踪的第一行:

at java.io.Writer.write(Writer.java:157) 
at MetaDataExtractor.metadataImageButtonMouseClicked(MetaDataExtractor.java:541) 

的问题是在metadataImageButtonMouseClicked(e),特别是在线541你觉得有哪些指令?涉及哪些变量?这应该有帮助