2012-07-19 9 views
5

ich diese Störung erhalte, wenn ich versuche, eine Datei zu öffnen:java.io.FileNotFoundException auf eine Datei

java.io.FileNotFoundException: D:\Portable%20Programs\Android%20Development\workspace3\XXX-desktop\bin\World_X.fr (The system cannot find the path specified) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.util.Scanner.<init>(Unknown Source) 

Die Datei im Verzeichnis vorhanden ist, aber ich bin immer noch diesen Fehler. Wenn ich jedoch die gleiche Datei in den Projekt-Quellordner des Eclipse-Arbeitsbereichs kopiere, wird keine solche Ausnahme zurückgegeben (obwohl diese Methode auch die Datei "World_X.fr" im Ordner "bin" erstellt).

Was ich versuche eigentlich zu tun ist, um die absolute Position der .jar-Datei durch diese:

fileLocation = new String(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()); 

Und dann bin ich Anfügen „World_X.fr“ an die Zeichenfolge filelocation aber dies funktioniert nicht . Bitte helfen Sie mir in dieser Hinsicht.

+4

Haben Sie wirklich Pfade mit „% 20“ in ihnen? –

+0

@DanielDiPaolo ja irgendwie! Ich schlafe...... :) – Rafay

Antwort

8

Sie müssen die auf Leerzeichen entfernen. Beispiel:

fileLocation = new String(
    Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()) 
    .replaceAll("%20", " "); 
0

Versuchen Sie,% 20 auszulassen und stattdessen normale Leerzeichen zu verwenden. Außerdem verwenden Sie Backslashes. Wenn Sie Backslashes verwenden, stellen Sie in Ihrem Code sicher, dass Sie sie zuerst umgehen.

15

Der bevorzugte Weg, um eine file: URL in eine tatsächliche File ist dies zu konvertieren:

File file = new File(url.toURI()); 

Diese kümmert sich um alle Kontrollen und unter Angabe/entkommen.

Wenn Sie stattdessen getPath() verwenden, bleiben diese ungeraden Bits Ihnen überlassen. Hier

6

ist die Lösung für das, wird dies erst nach jdk1.5 arbeiten,

try { f = new File("somePath".toURI().getPath()); } catch(Exception e) {} 
Verwandte Themen