0

我已经建立了一个项目。项目必须读取配置文件和数据文件(均为文本文件)。文件应该由用户上传,它们可以有不同的名称。一切正常。

我从项目创建了可运行的 jar,并尝试像这样从 cmd 运行它 java -jar walksat.jar "params_3.txt", "Test3ArielWCNF-log.wcnf":我可以打印 jar 中的参数,它认为它们没问题,但我得到: java.io.FileNotFoundException: params_3.txt, (The system cannot find the file specified) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at mla.project.main.WalkSAT.setGlobalParams(WalkSAT.java:347) at mla.project.main.WalkSAT.main(WalkSAT.java:60) 我得到第二个文件的相同错误。但是,如果我将文件名硬编码(而不是 args[0] 和 args[1]),jar 可以读取它们。

jar 文件和其他两个文件在同一个文件夹中。

我在这里想念什么?

更新 args[0]到最后了,,我没看到。

4

1 回答 1

2
File jarFile = new File(".");

这将为您提供 jar 所在的当前目录的引用。您现在可以使用 jarfile.listFiles() 从中读取文件。假设您应该将配置、数据文件和 jar 文件保存在同一个文件夹中

我创建了一个小型主类,您可以将其导出为可运行的 jar 并运行它。它将列出目录中的所有文件。

导入java.io.File;

公共类阅读器{

public static void main(String[] args) {

        File jarFile = new File(".");
        if(jarFile.isDirectory())
        {
            File[] allFiles = jarFile.listFiles();
            System.out.println("Printing File names");
            for (File file : allFiles) {
                System.out.println(file.getName());
                //code for reading the file goes here..............
            }
        }

    }

}

于 2013-08-06T20:13:46.803 回答