【发布时间】:2011-12-01 04:32:12
【问题描述】:
我正在使用一种方法为研究项目动态生成 XML 文件,它们被放入从文件路径读取的加载器中,我无法控制加载器如何处理事情(否则我会传递内部 XML 表示而不是使用临时文件),我正在使用此代码来保存文件:
File outputs = File.createTempFile("lvlFile", ".tmp.xml");
FileWriter fw = new FileWriter(outputs);
fw.write(el.asXML());
fw.close();
// filenames is my list of file paths which gets returned and passed around
filenames.add(outputs.getAbsolutePath());
现在,我确定有问题的文件是直接写入的。如果我打印 output.getAbsolutePath() 并通过终端导航到那里以检查文件,则所有内容都会正确生成和写入,因此文件系统上的所有内容都是正确的。但是,这段代码:
URL url = this.getClass().getClassLoader().getResource(_levelFile);
其中 _levelFile 是我上面生成的文件名之一,导致 url 为空。路径没有损坏或任何东西,打印验证 _levelFile 指向正确的路径。相同的代码已成功用于其他文件。此外,该错误似乎与我是否使用 getPath()、getCanonicalPath() 或 getAbsolutePath() 无关,进一步设置 output.isReadable(true) 没有任何作用。
有什么想法吗?请不要提供 Url url = 结构的替代方案,我无法控制此代码*,我有义务更改我的代码以正确设置 url。
(*) 至少无需花费大量精力重写我正在使用的大部分框架,即使当前代码在所有其他情况下都成功。
编辑:
同样,我无法使用 URL 代码的替代方法,它是我无法触及的加载程序的一部分。此外,即使我将临时文件的路径设置为与成功加载的文件所在的目录相同的目录,加载也会失败。
【问题讨论】:
-
由于您正在创建一个临时文件,在您关闭该文件后它可能会被自动删除。你检查了吗?
标签: java file url nullpointerexception