最近遇到读取不到文件的问题,开发测试一切正常,打包发版后读取不到文件的情况。
之前文件路径是相对路径,在jar包中其实是读取不到的。这时候需要使用类装载器(ClassLoader)进行读取配置文件。
(1) ClassLoader 是类加载器的抽象类。在运行时动态的获取加载类的运行信息。
(2) ClassLoader是abstract的,不可能实例化对象,可以通过Class类中的getResource()和getResourceAsStream()方法获取对应的信息。
当调用Resource类时:
getResource方法可以获取Resource所在jar包的路径信息。
URL url = this.getClass().getResource("/file/test.txt");
String file = url.getFile();
System.out.println(file);
getResourceAsStream返回读取指定资源的输入流。这个方法可以直接获得jar包中文件的内容。
String WORD_TEMPLATE = "/file/test.txt";
InputStream io = this.getClass().getResourceAsStream(WORD_TEMPLATE);
注意:文件路径直接从resources下开始写就可以了。