如果路径包含非拉丁字符,则找不到Mac OS上的Java文件

时间:2013-06-07 06:01:02

标签: java macos file

大家都好消息。

我在Mac OS上发现了java的问题。

我将带有非明字字符名称的文件放到文件夹测试中,完整路径为 / Users / dnelepov / Downloads / test /тестизображение.png

enter image description here

您可以看到文件存在!

接下来我写了一些代码来查看文件夹 / Users / dnelepov / Downloads / test / 上的所有文件并打开文件进行阅读(例如):

File dirF = new File("/Users/dnelepov/Downloads/test/");
            File[] files = dirF.listFiles();
            for (File oneF : files) {
                System.out.println("FILE:" + oneF);
                if (oneF.exists()){
                    System.out.println("EXISTS:"+oneF);
                }
            }

但接下来我得到了这个:

enter image description here

正如您所见,EXSIS行:从未打印过,但文件已成立!

另外printind系统属性得到:

的file.encoding = UTF-8

P.S。

我在Java java.io.filenotfoundexception for file path with cyrillic characters - 之前询问类似的类型问题但是我认为这个问题不仅适用于西里尔字符 - 而是适用于所有非拉丁语言。

1 个答案:

答案 0 :(得分:3)

在Java 7中,您可以使用java.nio.file API,它可以与西里尔语路径一起使用:

    Path path = Paths.get("/Users/dnelepov/Downloads/test/");
    Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
        @Override
        public FileVisitResult visitFile(Path oneF, BasicFileAttributes attrs) throws IOException {
            System.out.println("FILE:" + oneF);
            if (Files.exists(oneF)) {
                System.out.println("EXISTS:" + oneF);
            }
            return FileVisitResult.CONTINUE;
        }
    });