2012-04-05 5 views
4

Es funktioniert gut, wenn die gleiche Datei mit JFileChooser DialogEs war uns nicht Dateinamen in Java zu lesen, die in seinem Weg internationalisierte Zeichen enthält

Pfad ausgewählt ist, ist so etwas wie C: \ テ ス ト \ sample.txt

Der folgende Code funktioniert nicht

String teststring = "C:\\テスト\\sample.txt"; 
    File file = new File(teststring); 

    BufferedReader reader = new BufferedReader(new FileReader(file)); 
    System.out.println(reader.readLine()); 
    ... 

Es scheitert mit FileNotFoundException

+1

Mit welchem ​​Dateisystem arbeiten Sie? Wenn es mit JFileChooser funktioniert, schreiben Sie ein Programm und geben Sie den Pfad aus, der von der Instanz von JFileChooser gelesen wurde, und prüfen Sie, ob es derselbe ist. – Jagger

+3

Nicht sicher, ob das das Problem löst, aber Sie müssen das \ entschlüsseln, damit der Dateiname 'testring =" C: \\ テ ス ト \\ sample.txt "' lautet. – assylias

Antwort

8

Das Problem ist am wahrscheinlichsten, Wenn Java kompiliert wurde, kompilierte es in einer Codierung, die nicht mit der Dateicodierung für die テ ス ト Zeichen übereinstimmte. Sie können das überprüfen, indem

System.out.println(teststring); 

Einfügen, die wahrscheinlich nicht drucken テ ス ト

Per Standardeinstellung ist die Codierung der Plattform Kodierung ist. Wenn Sie Ihre Datei als UTF-8 gespeichert ist, können Sie mit

javac -encoding UTF-8 YourClass.java 

(oder verwenden Sie das encoding="UTF-8" Attribut für Ihre <javac> Aufgabe in Ant

EDIT kompilieren:

Und @assylias wies darauf hin, Backslashes müssen maskiert werden!

1

Vielen Dank für die Hilfe Die folgende Änderung hat das Problem gelöst, abgesehen von Ihren Lösungen

... 
File file = new File(new String(teststring.getBytes(),"utf8"); 
... 
Verwandte Themen