Java kann kein "file://"
Geschrieben von Olaf Willuhn am// LinuxLiefert:
File f1 = new File("file://tmp/foobar.txt");
System.out.println(f1.getAbsolutePath());
// Windows
File f2 = new File("file://C:/tmp/foobar.txt");
System.out.println(f2.getAbsolutePath());
Unter Linux: /work/file:/tmp/foobar.txt
Unter Windows: C:\work\file:\C:\tmp\foobar.txt
Beides ungueltige Pfad-Angaben. Java erkennt also das "file://" nicht, behandelt es als relativen Pfad und pappt es einfach an das aktuelle Verzeichnis (hier "/work" bzw. "C:\work") dran. Auch meine erste Vermutung, man müsste stattdessen file:/// (mit 3 Slashes) schreiben, weil es ja eigentlich file://<Host weggelassen>/ lautet, funktioniert nicht.
Mal schaun, ob sich dazu was ergoogeln lässt.
Update: Ein bisschen Probieren ergab folgende Lösung:
File f = new File(new URI("file:///tmp/foobar.txt"));Sprich: Erst eine URI erzeugen (mit 3 Slashes) und die dem File-Konstruktor geben.
File f = new File(new URI("file:///C:/tmp/foobar.txt"));