static File toFile()

in org.eclipse.sisu.inject/src/org/eclipse/sisu/space/FileEntryIterator.java [86:124]


    static File toFile( final URL url )
    {
        final StringBuilder buf = new StringBuilder();

        final String authority = url.getAuthority();
        if ( null != authority && authority.length() > 0 )
        {
            buf.append( File.separatorChar ).append( File.separatorChar ).append( authority );
        }

        final String path = url.getPath();
        for ( int i = 0, length = path.length(); i < length; i++ )
        {
            final char c = path.charAt( i );
            if ( '/' == c )
            {
                buf.append( File.separatorChar );
            }
            else if ( '%' == c && i < length - 2 )
            {
                final int hi = Character.digit( path.charAt( i + 1 ), 16 );
                final int lo = Character.digit( path.charAt( i + 2 ), 16 );
                if ( hi >= 0 && lo >= 0 )
                {
                    buf.append( (char) ( hi << 4 | lo ) );
                    i += 2;
                }
                else
                {
                    buf.append( '%' );
                }
            }
            else
            {
                buf.append( c );
            }
        }
        return new File( buf.toString() );
    }