java - 最佳实践 : where to place user i/o files for a JAR package

标签 java file jar

我正在开发一个工具,它将由用户接收 XML 文件。该工具将执行一些操作并创建一个新的 XML 文件,然后用户可以使用该文件做任何他们想做的事情。

我想将我的 jar 放在用户的 XML 文件 (input.xml) 旁边的文件夹 (XMLTOOL) 中。层次结构如下:

XMLTOOL
|__tool.jar
|__input.xml

在运行时,我希望访问文件 input.xml(或用户放入此文件夹中的任何其他 XML 文件(例如通过命令行参数:java tool newInput.xml)

目前我正在使用:

ClassName.class.getResource(inFile);

其中ClassName是我的类(class)的名称。然而,只有当 input.xml 与 Eclipse 中的源文件位于同一包中时,这才有效。

那么在 Java 项目中构建资源文件的标准约定是什么,请记住,从 JAR 存档运行时应该可以访问这些资源。

最佳答案

在本地文件系统中寻址文件的最简单方法是通过 java.io.File API:

String path=...
File file=new File(path);

// To read the file:
InputStream input=new FileInputStream(file);

// To write to the file:
OutputStream output=new FileOutputStream(file);

path 可以是绝对路径,也可以是相对于当前目录的相对路径。

更新

从 Eclipse 执行应用程序时,当前工作目录是启动的一个参数:您可以在运行配置arguments选项卡中设置它 窗口。默认情况下,它是项目的目录,但您可以设置自己的自定义目录。

关于java - 最佳实践 : where to place user i/o files for a JAR package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40610511/

相关文章:

java - 如何找到 Java Desktop API 在 Linux 上需要哪些库?

java - 如何使用 JFileChooser 在 Jython 中选择要保存文件的文件夹

C# 将文件从一个目录移动到 Azure 文件共享上的另一个目录

java.io.FileNotFoundException : (Read-only file system) Mac

java - 您如何防止人们在已编译的类文件中看到字符串文字?

可访问数据的 Java 约定。 (公共(public)访问器和 getter /命名)

java - Java中通过注解值获取枚举值

java - 为什么我在 getDir 上收到 NullPointerException?

jar - 作为独立运行 WireMock 服务器

java - 在 gradle 可执行 jar 文件中包含运行时参数