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.