2016-12-27 67 views
0

我目前正在为我开发的After Effects脚本开发自定义安装程序。我的计划是将需要复制到某个目录中的文件放在我正在创建的安装程序的JAR文件中。在Java项目中使用文件

我的问题是这样的。我应该在哪些Java项目结构中放置文件? (如果有帮助,我使用Eclipse)。其次,我如何访问并将这些文件复制到最终用户计算机上的自定义位置?任何代码示例都会非常感谢,因为我习惯用HTML和JavaScript进行开发。谢谢。

- 作为一个方面说明,我知道这个问题的变种之前已经发布。然而,这些问题并没有特别针对这个问题,因此使用寿命很短。

+0

你应该保持在同一个文件的文件的Java源代码将是,通常src文件夹 – ekeith

回答

0

jar中的文件是只读的资源。人们可以拿到它们

ClassInJar.getResource("/.../.../readme.html") 

getResourceAsStream或诸如此类。

尼斯也是外部形式:

Path path = Paths.get("jar:file:/ ... install.jar!/.../.../readme.html"); 
Files.copy(path, ...); 

使用的getResource蚀应用,其中,所述罐可能不是类路径上内(甚至不希望是类路径上)是不可行的,所以请使用jar:协议轻松地将文件从zip文件系统中复制出来。

+1

您的意思是'Paths.get(URI.create(“罐子: file:/ ... install.jar!/.../.../ readme.html“));'? – VGR

+0

@VGR通常我通过一个URI来完成,所以这可能是要走的路。你的评论是礼貌的“需要一个URI而不是一个字符串”? –

+0

非常。从我所知道的,Paths.get(String ...)方法需要路径组件。我期望传递一个包含URI的字符串失败。 – VGR

0

你可以从技术上把它们放在任何你想要的地方。约定在这里https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_project_layout,所以src/main/resources可能有意义,这取决于你实际所指的是什么。

复制文件可以用很多方法完成。 (被盗从这里:https://examples.javacodegeeks.com/core-java/io/file/4-ways-to-copy-file-in-java/

private static void copyFileUsingJava7Files(File source, File dest) 
     throws IOException { 
    Files.copy(source.toPath(), dest.toPath()); 
} 
+0

因此,如果我把'/src/com/mypackage/resources/file.txt'来访问这个文件,用这个目录创建一个文件对象的实例,那会起作用吗? –

+0

约定将是package/src/main/resources。它的工作是非常通用的,但它可以工作吗?绝对取决于你的实现。基本上我说的是发布你的代码,我们可以从那里帮助。 – visch