jar从外面读取文件

时间:2013-04-02 21:46:54

标签: java eclipse jar

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

我从项目中创建了runnable 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]最后有,,我没有看到。

1 个答案:

答案 0 :(得分:2)

File jarFile = new File(".");

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

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

import 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..............
            }
        }

    }

}