Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FileNotFoundException java在';在那里_Java_File_Filereader_Filenotfoundexception - Fatal编程技术网

FileNotFoundException java在';在那里

FileNotFoundException java在';在那里,java,file,filereader,filenotfoundexception,Java,File,Filereader,Filenotfoundexception,我正在尝试读取一个基本的txt文件,其中包含欧元价格。我的程序应该循环遍历这些价格,然后创建一个包含其他价格的新文件。现在,问题是java说它找不到第一个文件 它在完全相同的包中,如下所示: new FileReader(new File(this.getClass().getClassLoader().getResource("prices_usd.txt").getFile())); new FileReader("src/main/java/week5/practicum13/price

我正在尝试读取一个基本的txt文件,其中包含欧元价格。我的程序应该循环遍历这些价格,然后创建一个包含其他价格的新文件。现在,问题是java说它找不到第一个文件

它在完全相同的包中,如下所示:

new FileReader(new File(this.getClass().getClassLoader().getResource("prices_usd.txt").getFile()));
new FileReader("src/main/java/week5/practicum13/prices_usd.txt");

Java已在以下代码处失败:

FileReader fr = new FileReader("prices_usd.txt");
全部代码:

import java.io.*;

public class DollarToEur {
    public static void main(String[] arg) throws IOException, FileNotFoundException {
    FileReader fr = new FileReader("prices_usd.txt");
    BufferedReader br = new BufferedReader(fr);

    FileWriter fw = new FileWriter("prices_eur");
    PrintWriter pw = new PrintWriter(fw);

    String regel = br.readLine();
    while(regel != null) {
        String[] values = regel.split(" : ");
        String beschrijving = values[0];
        String prijsString = values[1];
        double prijs = Double.parseDouble(prijsString);
        double newPrijs = prijs * 0.913;

        pw.println(beschrijving + " : " + newPrijs);
        regel = br.readLine();
    }
    pw.close();
    br.close();

    }
}

您的文件名为“prices\u usd”,您的代码正在查找“prices\u usd.txt”

将资源文件(如
prices\u usd.txt
)放入包中是一种不好的做法。请把它放在
resources/
目录下。如果将其直接放在
resources/
目录中,则可以如下方式访问该文件:

new FileReader(new File(this.getClass().getClassLoader().getResource("prices_usd.txt").getFile()));
new FileReader("src/main/java/week5/practicum13/prices_usd.txt");
但是,如果您确实有很好的理由将其放入包中,您可以这样访问它:

new FileReader(new File(this.getClass().getClassLoader().getResource("prices_usd.txt").getFile()));
new FileReader("src/main/java/week5/practicum13/prices_usd.txt");
但当您导出项目(例如:作为jar)时,这将不起作用

编辑0:当然,您的文件名必须是“prices\u usd.txt”,而不仅仅是“prices\u usd”

编辑1:第一个(推荐)解决方案在
.getFile()
上返回字符串,当应用程序在IDE中生成/未运行时,该字符串不能直接传递给
新文件(…)
构造函数。但有一个解决方案:

只需将此代码用于Spring:

new FileReader(new ClassPathResource("prices_usd.txt").getFile());

您需要做几件事:

  • 将文件直接放在Eclipse中的项目文件夹下。在Eclipse中执行代码时,项目文件夹被视为工作目录。因此,您需要将文件放在那里,以便Java能够找到它
  • 使用
    .txt
    extn正确重命名文件。从屏幕打印来看,文件似乎没有扩展名,或者可能只是不可见

    希望这有帮助

    路径是相对于包结构的根,而不是相对于您所在的类。请尝试“week5/practicum13/prices_usd.txt”,或将文件移动到项目中包含的资源文件夹或类的根目录下。可能该类文件正在其他文件夹中执行。尝试找到DollarToEur.class并将txt文件移到那里。