我需要能够访问存储在已编译jar文件中的文件。我已经想出如何将文件添加到项目中,但我将如何在代码中引用它?我如何将文件从jar文件复制到用户硬盘上的某个位置?我知道有许多方法可以访问文件(FileInputStream、FileReader等),但我不知道如何查看文件本身。 最佳答案 你可以使用这样的东西:InputStream=this.getClass().getClassLoader().getResourceAsStream(fileFromJarFile);如果foo.txt位于JAR文件的根目录中,您将使用:InputS
我有一些非常标准的代码,它从一个流中获取一个序列化对象,它基本上看起来像这样:ObjectgetObjectFromStream(InputStreamis){ObjectInputStreamois=newObjectInputStream(is);returnois.readObject();}然后我的资源文件夹中有一个文件,因此在我的开发机器上,我可以将其作为文件或JarResource引用:InputStreamis=newFileInputStream("/home/.../src/main/resources/serializedObjects/testObject");I
我需要在一个jar中打包一个配置文件。配置文件位于jar文件的根目录下。但是我收到以下错误:Causedby:java.lang.IllegalArgumentException:URIisnothierarchicalatjava.io.File.(UnknownSource)Fileurl=newFile(MyClass.class.getClassLoader().getResource("my.conf").toURI()); 最佳答案 您应该使用getResourceAsStream()反而。如果文件嵌入在您的JAR中,则
我需要在一个jar中打包一个配置文件。配置文件位于jar文件的根目录下。但是我收到以下错误:Causedby:java.lang.IllegalArgumentException:URIisnothierarchicalatjava.io.File.(UnknownSource)Fileurl=newFile(MyClass.class.getClassLoader().getResource("my.conf").toURI()); 最佳答案 您应该使用getResourceAsStream()反而。如果文件嵌入在您的JAR中,则
Play.classloader.getResourceAsStream(filepath);文件路径-相对于什么?项目根?PlayFramework根?绝对路径?或者可能是Play.classloader.getResourceAsStream的用法不对? 最佳答案 在PlayFramework中,“conf”目录位于类路径中,因此您可以将文件放在那里并使用getResourceAsStream打开它。例如,如果您创建一个文件“conf/foo.txt”,您可以使用打开它Play.classloader.getResourceAs
Play.classloader.getResourceAsStream(filepath);文件路径-相对于什么?项目根?PlayFramework根?绝对路径?或者可能是Play.classloader.getResourceAsStream的用法不对? 最佳答案 在PlayFramework中,“conf”目录位于类路径中,因此您可以将文件放在那里并使用getResourceAsStream打开它。例如,如果您创建一个文件“conf/foo.txt”,您可以使用打开它Play.classloader.getResourceAs
这个问题在这里已经有了答案:Wheretoplaceandhowtoreadconfigurationresourcefilesinservletbasedapplication?(6个回答)关闭6年前。属性文件位置是WEB-INF/classes/auth.properties。我不能使用特定于JSF的方式(使用ExternalContext),因为我需要服务模块中的属性文件,该服务模块不依赖于Web模块。我已经试过了MyService.class.getClassLoader().getResourceAsStream("/WEB-INF/classes/auth.properti
这个问题在这里已经有了答案:Wheretoplaceandhowtoreadconfigurationresourcefilesinservletbasedapplication?(6个回答)关闭6年前。属性文件位置是WEB-INF/classes/auth.properties。我不能使用特定于JSF的方式(使用ExternalContext),因为我需要服务模块中的属性文件,该服务模块不依赖于Web模块。我已经试过了MyService.class.getClassLoader().getResourceAsStream("/WEB-INF/classes/auth.properti
我想知道这是否是必需的,因为当我使用此方法时,正在从类路径中读取文件。“不关闭”是否会导致内存泄漏。如何测试此类内存泄漏? 最佳答案 您假设Class.getResourceAsStream()将始终返回指向您的类的JAR文件中的文件的流。这是不正确的。您的类路径也可能包含文件夹,在这种情况下,Class.getResourceAsStream()将返回FileInputStream。其他一些类加载器也可能返回其他类型的资源,例如远程文件(在URLClassLoader的情况下)。即使在JAR文件的情况下,实现也有可能以任何方式在J
我想知道这是否是必需的,因为当我使用此方法时,正在从类路径中读取文件。“不关闭”是否会导致内存泄漏。如何测试此类内存泄漏? 最佳答案 您假设Class.getResourceAsStream()将始终返回指向您的类的JAR文件中的文件的流。这是不正确的。您的类路径也可能包含文件夹,在这种情况下,Class.getResourceAsStream()将返回FileInputStream。其他一些类加载器也可能返回其他类型的资源,例如远程文件(在URLClassLoader的情况下)。即使在JAR文件的情况下,实现也有可能以任何方式在J