William William - 1 year ago 66
Java Question

File not found. Why not?

Okay, I'm trying to load a file in Java using this code:

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


and despite the file being in the same folder as the class it says it can't find it (yes, it is in a try catch block in the full code).

However, it finds another file using the same code with a different name:

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


Why can't my code find my map.mp file?

Answer Source

You're trying to use a url as if it's a filename. It won't be. It'll be something starting with file://. In other deployment scenarios there may not be an actual file to open at all - it may be within a jar file, for example. You can use URL.getFile() if you really, really have to - but it's better not to.

Use getResourceAsStream instead of getResource() - that gives you an InputStream directly. Alternatively, keep using getResource() if you want the URL for something else, but then use URL.openStream() to get at the data.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download