最佳实践:在何处为JAR包放置用户i / o文件

时间:2016-11-15 13:02:13

标签: java file jar

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

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

XMLTOOL
|__tool.jar
|__input.xml

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

目前我正在使用:

ClassName.class.getResource(inFile);

ClassName是我班级的名称。但是,只有当input.xml与Eclipse中的源文件位于同一个包中时,这才有效。

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

2 个答案:

答案 0 :(得分:1)

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

int[][] list = {{2,3,5,10,13}, {12,23,9,8}, {34,11,14,15,67,28,5}, {7,23,67,27,30,33}};
HashSet<Integer> seenItems = new HashSet<>();
for(int i = 0; i < list.length; i++) {
    int[] l = list[i];
    for(int j = 0; j < l.length; j++) {
        int itemToCheck = l[j];
        if (seenItems.contains(itemToCheck)) {
            System.out.println("We've already seen " + itemToCheck);
            return;
        } else {
            seenItems.add(itemToCheck);
        }
    }
 }

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); 可以是当前目录的绝对值或相对值。

更新

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

答案 1 :(得分:0)

您也可以创建自己的命名空间,例如(D:\ .. \ Project \ Input \ .xml文件),您可以在其中放置xml文件并在运行时获取以避免混淆。然后,您可以使用像 getAbsolutePath()这样的方法来获取xml文件的路径并在任何你想要的地方运行,尤其是当你从JAR文件运行时。

您还可以使用类似Maven工具,以结构化和传统的方式管理您的项目和目录。