- From: Julian Reschke <julian.reschke@gmx.de>
- Date: Thu, 12 May 2005 15:30:04 +0200
- To: Graham Klyne <gk@ninebynine.org>
- CC: uri@w3.org
Graham Klyne wrote:
>
> I've recently been tinkering with a Java program that uses URIs, finding
> that it doesn't work on Windows because of its filename->URI conversion
> logic. This has prompted me to map out a generic function to map a
> filename to a file: URI.
>
> Examples:
> Unix:
> Filename /foo/bar maps to file:///foo/bar
> i.e. prepend "file://"
> Windows:
> Filename C:\foo\bar maps to file:///C:foo/bar
> i.e. prepend "file:///" and map \ to /.
>
> This has prompted me to try and create a generic, operating-system
> independent function to turn (almost all) filename strings into
> corresponding file: URI string. My first attempt is this, which
> attempts to cover Windows and Unix:
>
> [[
> public static String uriFromFilename(
> String filename)
> {
> StringBuffer mapfilename = new StringBuffer( filename ) ;
> for ( int i = 0 ; i < mapfilename.length() ; i++ )
> {
> if ( mapfilename.charAt(i) == '\\' )
> mapfilename.setCharAt(i, '/') ;
> }
> if (filename.charAt(0) == '/')
> {
> return "file://"+mapfilename.toString() ;
> }
> else
> {
> return "file:///"+mapfilename.toString() ;
> }
> }
> ]]
>
> What's missing here? How does this stand up on a Mac platform?
It misses non-ASCII characters, and ASCII characters that need to be
escaped in URIs.
Best regards, Julian
Received on Thursday, 12 May 2005 13:30:16 UTC