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