无法从java中的文件名读取,其中包含路径中的国际化字符

时间:2012-04-05 12:29:25

标签: java file ascii

如果使用JFileChooser对话框

选择了相同的文件,它可以正常工作

路径是这样的 C:\テスト\ sample.txt的

以下代码不起作用

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

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

FileNotFoundException失败

2 个答案:

答案 0 :(得分:8)

问题很可能是在Java编译时,它编译的编码与テスト字符的文件编码不匹配。您可以通过插入

来检查
 System.out.println(teststring);

可能不会打印テスト

默认情况下,编码是平台编码。如果您的文件保存为UTF-8,则可以使用

进行编译
javac -encoding UTF-8 YourClass.java

(或使用Ant

encoding="UTF-8"任务的<javac>属性

编辑:

正如@assylias指出的那样,反斜杠需要转义!

答案 1 :(得分:1)

非常感谢你的帮助。除了您的解决方案之外,以下更改已解决了该问题

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