带有getResources的FileNotFoundException

时间:2014-03-27 08:48:42

标签: java file-io

我使用Class.getResource(String)来检索文件的url,并且它工作得非常好,但是当我尝试'返回带有返回的url的文件读取器时,异常: java.io.FileNotFoundException 被触发

URL bpmnResourceUrl = ConvertXmlToJson.class.getClassLoader().getResource("file.txt");
Reader reader = new FileReader(bpmnResourceUrl.toString());

2 个答案:

答案 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来读取它,如代码所示

相关问题