我正在获取文件未找到异常,以便在成功编译后从部署的jar中访问File对象中的文件。在这种情况下,文件放在src的默认文件夹中,并通过 src / filename.txt 进行访问。
甚至尝试了MyClass.class.getResource(“/ file.txt”)。getPath();访问文件 Dir Structure http://i43.tinypic.com/2dble0k.png
File filterFile=new File("win.txt");
File currentFile=new File("winP.txt");
请提供建议,即将文本文件放在netbeans中以供jar部署。
答案 0 :(得分:0)
您需要区分文件和资源。每个文件也是一种资源,但反之亦然。在JAR文件中,您没有文件,只有资源。
使用类加载器也可以加载资源。所以你必须首先检索一个类加载器,然后用它加载资源:
ClassLoader loader = Thread.currentThread().getContextClassLoader();
URL resourceUrl = loader.getResource(resourceName);
try (InputStream in = resourceUrl.openStream()) {
// load bytes from the input stream here
}
// process the loaded resource bytes here
现在放置文件的位置?您可以将它们放入JAR的根目录中。在项目内部,这意味着将资源文件放入文件夹src
。或者你把它们放在一个包中,让它们放在需要它的类旁边。
如果放入根目录,则只能通过资源名称访问它们。如果放入子目录(包),则必须在资源名称前加上该路径 - 从根开始。例如:
URL resourceUrl = loader.getResource("my/pkg/win.txt");
只是方便:如果资源文件与需要该资源的类放在同一个包中,您也可以使用该类本身进行加载(而不是类加载器):
URL resourceUrl = getClass().getResource("win.txt");
注意,在这种情况下,目录结构被省略。
在您的示例中,您创建了一个文件对象。如果您以后使用该文件对象创建FileInputStream
,那么您可以使用上面描述的InputStream
而不是。{/ p>