Java – 用于读取文本文件的FilenotfoundException

通过运行这…

File file = new File("Highscores.scr"); 

我一直得到这个错误,我真的不知道如何绕过它。 该文件当前位于我的.java文件的源包中。 我可以通过指定路径轻松读取文件但我打算在多台计算机上运行它,所以我需要使用该程序随身携带该文件。 这个问题不是关于读取文本文件而是指定其位置而不使用绝对路径。 香港专业教育学院搜索答案,但我得到的答案只是“指定名称”和“指定绝对路径”。 id张贴图片以使其更清晰,但我没有10个代表这样做:/我该怎么做?

干杯。

执行此操作的最佳方法是将其放入类路径然后getResource()

 package com.sandbox; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; public class Sandbox { public static void main(String[] args) throws URISyntaxException, IOException { new Sandbox().run(); } private void run() throws URISyntaxException, IOException { URL resource = Sandbox.class.getResource("/my.txt"); File file = new File(resource.toURI()); String s = FileUtils.readFileToString(file); System.out.println(s); } } 

我这样做是因为我假设你需要一个File 。 但是如果你有一个api接受一个InputStream ,那么使用getResourceAsStream可能会更好。

注意路径/my.txt 。 这意味着,“获取名为my.txt的文件,该文件位于类路径的根目录中”。 我相信您可以阅读有关getResourcegetResourceAsStream更多信息,以了解有关如何执行此操作的更多信息。 但关键是文件的类路径对于您提供可执行文件的任何计算机都是相同的 (只要您不在类路径中移动文件)。

顺便说一句,如果你在执行new File的行上得到一个空指针exception,这意味着你没有为文件指定正确的类路径。

据我记得,默认目录与项目文件夹级别相同。 将文件放高一级。

 -Project/ ----src/ ----test/ -Highscores.scr 

如果要在eclipse上构建代码,则需要将Highscores.scr放到项目文件夹中。 试试看并检查。

您可以尝试运行以下示例程序以检查程序正在拾取的当前目​​录。

 File f = new File("."); System.out.println("Current Directory is: " + f.getAbsolutePath());