Java 我的程序在Eclipse中读取.txt文件,但在导出为.jar时不读取?

Java 我的程序在Eclipse中读取.txt文件,但在导出为.jar时不读取?,java,file,export,filepath,Java,File,Export,Filepath,我在一个名为“progress”的文件夹中有一些.txt文件,如下所示: public void writeToFile(String filename){ BufferedWriter bufferedWriter = null; try { //Construct the BufferedWriter object bufferedWriter = new BufferedWriter(new FileWriter(f

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

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();
            }
        }

}

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

编辑:

我有这样一种编写方法:

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()与此合并?

是的,您应该将它们放在源代码中的一个目录中,然后使用类路径进行访问。例如,请参见Class.getResourceAsStream()。这将使它在任何地方都能工作。

我的类使用以下命令从我的项目的根文件夹中读取文件:

    FileInputStream fis = new FileInputStream(filename); 
    Scanner scanner = new Scanner(fis);
其中filename是我的文件名(包括文件路径)

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

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


然后找到文件。我希望这能对你有所帮助。

我用writeToFile()方法编辑了这篇主要文章。我如何将getResourceAsStream()放入writer方法中?那么您正在读写这些文件?那么类路径的事情就不起作用了。我以为你只是在看。如果您必须读写,那么您需要选择一个在Eclipse之外运行时可以访问的文件名。那么,您所说的文件名是什么意思?我可以在Eclipse运行时访问它。像用户ASH\HealthCase:Easy1.txt或是什么?是的,考虑使用用户.dir或用户。取决于您想在哪里创建文件。<代码>用户。dir < /代码>不是常数(可靠)。改用
user.home