O'Reilly logo

Java Cookbook by Ian F. Darwin

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required