2015-01-05 149 views
0

如果我加载一些(比如* .txt)文件到我的Java应用程序,我怎么能它inlcude到我的可执行的JAR,使其便携(也就是说,如果我将我的罐子到另一台机器,它不需要移动这个* .txt文件)?包括外部文件(而不是JAR)到可执行的JAR

请注意,我不需要文件的内容我需要文件本身。我应该如何从代码中编写这个文件的路径?

String path = "path/to/file/"; //Yeah it should be String 

我使用的是IntellijIDEA,我可以包含任何文件到我的最终jar但不知道它放在哪里。谢谢。

+1

可能重复(http://stackoverflow.com/questions/18717038 /添加资源在intellij为java项目) – Joe

+0

@Joe谢谢,看起来有用,但这么多字母:D,我会检查出来 – Daria

+0

@Joe但是,当你看到这个问题hasn 't接受答案,作者标记为不解决他的问题 – Daria

回答

0

你需要下面

<target name="somejar" depends="compile"> 
     <jar jarfile="${somejar.jar}"> 
     <fileset dir="${bin.dir}"> 
      <include name="**/*.class"/> 
     </fileset> 
     <zipgroupfileset dir="lib" includes="*.jar"/> 
     <fileset dir="${basedir}"> 
      <include name="config/*.properties"/> 
      <include name="config/*.txt"/> 
     </fileset> 
     </jar> 
    </target> 

这有点像将会把所有需要的类和属性文件一起。您可以从项目的底部编码文件的位置,直到您到达文件。

2

只要把你的文件到项目的SRC文件夹 - 例如的src /资源/ file.txt的。当你建立你的项目时,整个src内容将被放入结果jar中。你可以用下面的代码访问您的文件:

this.getClass().getResource("/resource/file.txt");  

读取所有行的一个例子:在的IntelliJ为Java项目增加资源]

URL url = this.getClass().getResource("/resource/file.txt"); 
Path path = Paths.get(url.toURI()); 
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);  
+0

感谢您的输入。但是我的函数等待'string'格式的文件路径作为参数。使用'toString()'我得到像'file:/ full/path/to/file /'这样的字符串,所以它对我不可用。 – Daria