【问题标题】:My program reads .txt files in Eclipse, but not when I export as .jar?我的程序在 Eclipse 中读取 .txt 文件,但在导出为 .jar 时不读取?
【发布时间】:2012-01-31 12:32:21
【问题描述】:

我在一个名为“progress”的文件夹中有一些 .txt 文件,如下所示:

当我在 Eclipse 中将它作为 Java 应用程序运行时,该程序可以很好地读取文件,但是当我将它导出为 jar 并运行它时,它就不起作用了。我使用 BufferedReader 读取 .txt 文件,并将文本文件称为“progress/easy1.txt”等。有什么办法可以解决这个问题吗?

编辑:

我有一个这样的 writer 方法:

public void writeToFile(String filename){

     BufferedWriter bufferedWriter = null;

     try {

            //Construct the BufferedWriter object
            bufferedWriter = new BufferedWriter(new FileWriter(filename));

            //Start writing to the output stream
            bufferedWriter.write("a");

        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            //Close the BufferedWriter
            try {
                if (bufferedWriter != null) {
                    bufferedWriter.flush();
                    bufferedWriter.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

}

那么我如何将 .getResourceAsStream() 与此合并?

【问题讨论】:

    标签: java file export filepath


    【解决方案1】:

    是的,您应该将它们放在源代码中的目录中,然后使用类路径进行访问。例如,参见 Class.getResourceAsStream()。这将使它无处不在。

    【讨论】:

    • 我用 writeToFile() 方法编辑了主帖。我将如何放入 getResourceAsStream() 以使用 writer 方法?
    • 所以你在读写这些文件?那么类路径的事情就不起作用了。我以为你只是在读它们。如果你必须读写,那么你需要选择一个在 Eclipse 之外运行时可以访问的文件名。
    • 是的,对不起,应该更清楚。那么,我可以在 Eclipse 中访问的文件名是什么意思。像 Users\Asingh\Desktop\easy1.txt 什么的?
    • 是的,请考虑使用 user.dir 或 user.home system properties,具体取决于您要创建文件的位置。
    • user.dir 不是恒定的(可靠的)。请改用user.home
    【解决方案2】:

    我的班级使用以下方法从我的项目的根文件夹中读取文件:

        FileInputStream fis = new FileInputStream(filename); 
        Scanner scanner = new Scanner(fis);
    

    其中 filename 是我的文件的名称(包括文件的路径)。

    如果您使用 eclipse 选择您的类(使用 main 方法)生成一个可运行的 jar,在我的情况下为 testing.ReverseWords 作为“启动配置”在进程中并执行该 jar,如下所示:

    java -cp runnable.jar testing.ReverseWords progress/B-large-practice.in

    它会找到文件。希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-01-04
      • 1970-01-01
      • 2014-06-01
      • 2017-08-31
      • 2013-05-09
      • 1970-01-01
      • 2010-12-17
      • 2015-09-16
      • 1970-01-01
      相关资源
      最近更新 更多