我使用Class.getResource(String)来检索文件的url,并且它工作得非常好,但是当我尝试'返回带有返回的url的文件读取器时,异常: java.io.FileNotFoundException 被触发
URL bpmnResourceUrl = ConvertXmlToJson.class.getClassLoader().getResource("file.txt");
Reader reader = new FileReader(bpmnResourceUrl.toString());
答案 0 :(得分:4)
Java中的资源不是文件。例如,如果资源位于JAR中,则无法像文件一样访问它。你必须首先爆炸JAR。你可以尝试:
Class.getResourceAsStream()
阅读内容。这是一个简短的例子:
public class Example {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(Example.class.getResourceAsStream("/META-INF/MANIFEST.MF")));
String line;
do {
line = br.readLine();
if (line != null) System.out.println(line);
} while (line != null);
}
}
答案 1 :(得分:0)
不要将其作为文件打开,将其用作InputStream,在您的情况下,如果您想让Reader获取数据,那么您可以使用:
InputStream is = ConvertXmlToJson.class.getClassLoader().getResourceAsStream("file.txt");
Reader reader = new InputStreamReader(is);
当您从Classpath加载资源时,此类资源可以位于jar文件中,因此它不像文件系统中的常规文件那样可访问,但您可以打开Stream来读取它,如代码所示