2
* Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
28
* Modified for IKVM by Jeroen Frijters on May 22, 2007.
30
* This is a merged version of the Windows & Solaris platform specific versions.
31
* Since the IKVM class library binary can be used both on Windows and on *nix,
32
* I've merged the platform specific classes into a generic class that at
33
* runtime determines if it runs on Windows or not.
41
import sun.net.www.ParseUtil;
44
* Platform specific handling for file: URLs . In particular deals
45
* with network paths mapping them to UNCs.
47
* @author Michael McMahon
48
* @version 1.10, 07/05/05
51
public class FileURLMapper {
52
private static final boolean runningOnWindows = cli.System.Environment.get_OSVersion().ToString().indexOf("Unix") == -1;
56
public FileURLMapper (URL url) {
61
* @returns the platform specific path corresponding to the URL, and in particular
62
* returns a UNC when the authority contains a hostname
65
public String getPath () {
69
if (runningOnWindows) {
70
String host = url.getHost();
71
if (host != null && !host.equals("") &&
72
!"localhost".equalsIgnoreCase(host)) {
73
String rest = url.getFile();
74
String s = host + ParseUtil.decode (url.getFile());
75
file = "\\\\"+ s.replace('/', '\\');
78
String path = url.getFile().replace('/', '\\');
79
file = ParseUtil.decode(path);
82
String host = url.getHost();
83
if (host == null || "".equals(host) || "localhost".equalsIgnoreCase (host)) {
85
file = ParseUtil.decode (file);
91
public boolean exists() {
92
String path = getPath();
96
File f = new File (path);