Dmitry Nelepov
Dmitry Nelepov

Reputation: 7306

Java on Mac OS FileNotFound if path contatins non latin characters

Good news everyone.

I found intersted problem with java on my Mac OS.

I put file with name from nonlatin characters to folder test, full path is /Users/dnelepov/Downloads/test/тест изображение.png

enter image description here

As u can see file exists!

Next i wrote some code to view all files on folder /Users/dnelepov/Downloads/test/ and open file for read (for example):

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

But next i got this:

enter image description here

As you can see line EXSIS: never printed, but file founded!

Also printind system properties get:

file.encoding=UTF-8

p.s.

I ask similar type question before Java java.io.filenotfoundexception for file path with cyrillic characters - but i think this problem not for only Cyrillic characters - but for all non latin languages.

Upvotes: 3

Views: 1267

Answers (1)

eumust
eumust

Reputation: 146

In Java 7 you can use java.nio.file API, it works properly with cyrillic paths:

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

Upvotes: 3

Related Questions