【问题标题】:Java on Mac OS FileNotFound if path contatins non latin characters如果路径包含非拉丁字符,则 Mac OS FileNotFound 上的 Java
【发布时间】:2013-06-07 06:01:02
【问题描述】:

大家好消息。

我在我的 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 行:从未打印,但文件已建立!

还打印系统属性获取:

file.encoding=UTF-8

附言

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

【问题讨论】:

    标签: java macos file


    【解决方案1】:

    在 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;
            }
        });
    

    【讨论】:

    猜你喜欢
    • 2018-06-21
    • 2015-03-24
    • 1970-01-01
    • 2015-03-12
    • 2017-11-02
    • 2016-05-19
    • 1970-01-01
    • 2013-01-16
    • 2012-09-20
    相关资源
    最近更新 更多