java - 文件未找到。为什么不?

标签 java file file-io io

好的,我正在尝试使用以下代码在 Java 中加载一个文件:

String file = "map.mp";
URL url = this.getClass().getResource(file);
System.out.println("url = " + url);
FileInputStream x = new FileInputStream("" + url);

尽管该文件与它说它找不到它的类位于同一文件夹中(是的,它在完整代码中的 try catch block 中)。

但是,它会找到另一个使用相同代码但名称不同的文件:

URL url = this.getClass().getResource("default.png");
System.out.println("url2 = " + this.getClass().getResource("default.png"));
BufferedImage img = ImageIO.read(url);

为什么我的代码找不到我的 map.mp 文件?

最佳答案

您正在尝试将 url 当作文件名来使用。不会的。它将以 file:// 开头。在其他部署场景中,可能根本没有要打开的实际文件——例如,它可能位于 jar 文件中。如果确实需要,您可以使用 URL.getFile() - 但最好不要使用。

使用 getResourceAsStream 而不是 getResource() - 直接为您提供 InputStream。或者,如果您需要其他内容的 URL,请继续使用 getResource(),然后使用 URL.openStream() 获取数据。

关于java - 文件未找到。为什么不?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/636046/

相关文章:

Java:如何在不迭代的情况下从 List<T> 转换为 Map<f1(T), List(f2(T))>

java - 将 StreamingOutput 转换为字符串

c - 为什么将 wchar 字符串写入文件在 C 中不起作用

java - 建立与数据库的连接是什么意思? DriverManager.getConnection 的作用是什么?

java - 在java中读取CSV文件时无法打印空行

c - 如果发生错误,我应该关闭(文件)吗?

java - 如何从文件系统中的相对路径找到绝对路径

winapi - ReplaceFile Windows API 只是一个方便的函数吗?

java - JTextArea的append()方法好像不行

python - 减少文本文件大小的编程技术