FileNotFoundException java 无法基本找到文件

FileNotFoundException java cannot basic find file while it's there

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

它在与这样的完全相同的包中:

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_usd",您的代码正在查找 "prices_usd.txt"

将资源文件(如 prices_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");

但是当您导出项目(例如:作为 jar)时,这将不起作用。

编辑 0: 当然,您的文件名必须是 "prices_usd.txt" 而不仅仅是 "prices_usd".

编辑 1: 第一个(推荐的)解决方案 return .getFile() 上的一个字符串不能直接传递给 new File(...) 构建应用程序时的构造函数/不是 运行 中的 IDE。 Spring has a solution to it though: org.springframework.core.io.ClassPathResource.

只需将此代码与 Spring 一起使用:

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

您需要做几件事:

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

希望对您有所帮助!