文件未找到.为什么不?

Wil*_*iam 4 java io file-io file

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

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

尽管在同一个文件夹中的类文件是它说,它不能找到它(是的,这在充分代码try catch块).

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

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

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

Jon*_*eet 18

您正在尝试使用URL,就好像它是文件名一样.它不会.这将是一个开始file://.在其他部署方案中,可能根本没有要打开的实际文件 - 例如,它可能位于jar文件中.你可以使用,URL.getFile()如果你真的,真的必须 - 但最好不要.

使用getResourceAsStream而不是getResource()- InputStream直接给你一个.或者,getResource()如果您想要其他内容的URL ,请继续使用,但随后用于URL.openStream()获取数据.