Mac OS FileNotFound上的Java,如果路径包含非拉丁字符

大家好消息。

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

我将带有非明字字符名称的文件放到文件夹测试中,完整路径是/ 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之前询问类似的类型问题 – 我认为这个问题不仅适用于西里尔字符 – 而是适用于所有非拉丁语言。

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

  Path path = Paths.get("/Users/dnelepov/Downloads/test/"); Files.walkFileTree(path, new SimpleFileVisitor() { @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; } });