Converting a Filename to a URL
Problem
You require a URL, but you have a local file.
Solution
Use getResource( )
or File.toURL( )
.
Discussion
There are many operations that require a URL, but for which it would
be convenient to refer to a file on the local filesystem or disk. For
these, the convenience method getResource( )
in
the class java.lang.Class
can be used. This takes
a filename and returns a URL for it:
public class GetResource { public static void main(String[] argv) { Class c = GetResource.class; java.net.URL u = c.getResource("GetResource.java"); System.out.println(u); } }
When I ran this code on Java 2 on my MS-Windows system, it printed:
file:/C:/javasrc/netweb/GetResource.java
Java 2 also introduced a toURL( )
method into the
File
class (Section 10.2). Unlike
getResource( )
, this method can throw a
MalformedURLException
. This makes sense, since a
File
class can be constructed with arbitrary
nonsense in the filename. So the previous code can be rewritten as:
public class FileToURL { public static void main(String[] argv) throws MalformedURLException { java.net.URL u = new File("GetResource.java").toURL( ); System.out.println(u); } }
Both programs print the same result:
> java FileToURL file:/usr/home/ian/javasrc/netweb/GetResource.java > java GetResource file:/usr/home/ian/javasrc/netweb/GetResource.java
Get Java Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.