gpt4 book ai didi

java - JenaParser 代码中的错误

转载 作者:太空宇宙 更新时间:2023-11-04 07:09:37 25 4
gpt4 key购买 nike

我想运行这段代码:

public class JenaParser {

public static void main(String[] args){
String pathFolder="E:/swetodblp_april_2008.rdf";
File folder=new File(pathFolder);
File[] files=folder.listFiles();
for(File file:files){
try {
System.out.println("*** File: name="+file.getName()+" path="+file.getPath());

InputStream in=null;
in = new FileInputStream(file.getPath());

OutputStream output=null;
output = new FileOutputStream(pathFolder+"/"+ file.getName() +".nt");

Model model = ModelFactory.createDefaultModel();
RDFDataMgr.read(model, in, org.apache.jena.riot.Lang.RDFXML);
RDFDataMgr.write(output, model, org.apache.jena.riot.RDFFormat.NTRIPLES_ASCII) ;

//Extratct URIs
ArrayList outgoingUrls = new ArrayList();
for (StmtIterator i = model.listStatements(); i.hasNext(); ) {
Statement s = (Statement) i.next();
if (!s.getSubject().isAnon()) {
outgoingUrls.add( s.getSubject().getURI());
}
outgoingUrls.add( s.getPredicate().getURI() );
if (s.getObject().isResource() && !s.getResource().isAnon()) {
outgoingUrls.add( s.getResource().getURI() );
}
}
} catch (FileNotFoundException ex) {
Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
}

}
}}

运行时显示此错误:

Exception in thread "main" java.lang.NullPointerException
at jenaparser.JenaParser.main(JenaParser.java:32)
Java Result: 1

最佳答案

我希望 E:/swetodblp_april_2008.rdf 是单个文件的路径,而不是目录的路径。请注意,如果文件不是目录,listFiles 将返回 null:

listFiles

public File[] listFiles()

Returns an array of abstract pathnames denoting the files in the directory denoted by this abstract pathname. …

Returns

An array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname. The array will be empty if the directory is empty. Returns null if this abstract pathname does not denote a directory, or if an I/O error occurs.

我期望发生的事情是这样的:

String pathFolder="E:/swetodblp_april_2008.rdf";

pathFolder 是一个字符串,它是 RDF 文档的路径名(但不是目录)。

File folder=new File(pathFolder);

文件文件夹创建成功,但它表示的是普通文件,而不是目录。

File[] files=folder.listFiles();

调用folder.listFiles()返回时不会引发异常,但由于该文件不是目录,因此返回null。这意味着当您尝试迭代

中的数组(因为没有数组)时,您会遇到空指针异常
for( File file : files ) {

}

如果您尝试迭代 E:/swetodblp_april_2008.rdf 同一目录中的所有文件,那么您可以执行以下操作:

String pathFolder="E:/swetodblp_april_2008.rdf"; 
File folder=new File(pathFolder);
File[] files=folder.getParentFile().listFiles(); // note getParentFile()

如果您只是想迭代 E:/ 中的文件,那么您可以简单地执行以下操作:

String pathFolder="E:/"; 
File folder=new File(pathFolder);
File[] files=folder.listFiles();

关于java - JenaParser 代码中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20839034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com