3

大家好消息。

我在我的 Mac OS 上发现了对 java 感兴趣的问题。

我将名称为非拉丁字符的文件放入文件夹 test,完整路径为/Users/dnelepov/Downloads/test/тест изображение.png

在此处输入图像描述

如您所见,文件存在!

接下来,我编写了一些代码来查看文件夹/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);
                }
            }

但接下来我得到了这个:

在此处输入图像描述

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

printind 系统属性也得到:

file.encoding=UTF-8

ps

我在Java java.io.filenotfoundexception 之前针对带有西里尔字符的文件路径询问了类似类型的问题-我认为这个问题不仅适用于西里尔字符 - 而是适用于所有非拉丁语言。

4

1 回答 1

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;
        }
    });
于 2013-07-05T04:43:23.527 回答