我已经在很多方面尝试了这个,并遵循了几个在线指令,比如这个 - Eclipse导出的Runnable JAR没有显示图像 但到目前为止,没有成功.
我有一个非常简单的程序,它读取文本文件(test.txt)并将其内容打印到标准输出.我正在使用Eclipse.这是我所做的 -
我把文本文件放到一个名为'resources'的文件夹中
我右键单击资源文件夹,选择"构建路径"并点击"用作资源文件夹"
在我的代码中,我尝试了两种方式来处理文件 - (a)作为"/test.txt",(b)作为"resources/test.txt.后一种方法在Eclipse中运行程序时有效.但是,当我将项目导出为可运行的jar文件时,该方法有效.资源文件夹无法包含在jar文件中.
任何帮助都感激不尽.
附录:这是代码.
public class FileIOTest { public static void main(String[] args) { String line; try { BufferedReader br = new BufferedReader(new FileReader(new File("/test.txt"))); while((line = br.readLine()) != null){ System.out.println(line); } br.close(); } catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} }
}
您无法通过a访问Jar文件中的资源,FileReader
因为它不是文件系统上的文件.Java确实有一种机制来访问类路径中的资源(包括在Jars中):ClassLoader.getResourceAsStream().您可以将它与默认的类加载器一起使用:
BufferedReader br = new BufferedReader(new InputStreamReader( ClassLoader.getSystemClassLoader() .getResourceAsStream("resource/test.txt")));
请注意,getResourceAsStream
返回null
而不是抛出异常,因此您可能希望首先获取流,检查是否为null
,然后抛出异常或处理它.
您将希望在jar中提供完整路径作为路径.