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());
您需要做几件事:
- 将文件直接放在Eclipse中的项目文件夹下。 当您在 Eclipse 中执行代码时,项目文件夹被视为工作目录。所以你需要把文件放在那里以便 Java 可以找到它。
- 使用
.txt
扩展名正确重命名文件。 从您的屏幕打印来看,该文件似乎没有扩展名,或者可能只是不可见。
希望对您有所帮助!
我正在尝试读取包含欧元价格的基本 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());
您需要做几件事:
- 将文件直接放在Eclipse中的项目文件夹下。 当您在 Eclipse 中执行代码时,项目文件夹被视为工作目录。所以你需要把文件放在那里以便 Java 可以找到它。
- 使用
.txt
扩展名正确重命名文件。 从您的屏幕打印来看,该文件似乎没有扩展名,或者可能只是不可见。
希望对您有所帮助!