我正在使用metadata extractor API从图片中提取元数据。然后我使用Java创建包含所有数据的.txt文件。但是,当我运行该文件时,我有nullpointexception。
我知道在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;
我的第一个想法是将返回类型作为String,但它不允许我这样做。任何建议都是受欢迎的,因为我对Java不太满意。 Here are the errors
提前致谢。
答案 0 :(得分:1)
通过阅读JDK附带的java.io.Writer的源代码,您可以推断出您正在向Writer写入一个空字符串,这会导致NullPointerException。这发生在MetaDataExtractor.metadataImageButtonMouseClicked()
,位于第541行的文件MetaDataExtractor.java
中。
在编写之前检查您的字符串是否为空。
答案 1 :(得分:1)
以下是错误跟踪的第一行:
at java.io.Writer.write(Writer.java:157)
at MetaDataExtractor.metadataImageButtonMouseClicked(MetaDataExtractor.java:541)
问题出在metadataImageButtonMouseClicked(e)
,特别是在第541行,您在那里找到哪条指令?哪些变量涉及?这应该有帮助