3

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.

Community
  • 1
  • 1
Dmitry Nelepov
  • 7,246
  • 8
  • 53
  • 74

1 Answers1

3

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;
        }
    });
eumust
  • 146
  • 2
  • 2
  • 7
  • Add this answer to http://stackoverflow.com/questions/16968299/java-java-io-filenotfoundexception-for-file-path-with-cyrillic-characters?rq=1 – Dmitry Nelepov Jul 05 '13 at 05:28
  • Just to recap: new FileInputStream(path.toFile) has this problem but Files.newInputStream(path) doesn't. – Tvaroh Oct 17 '13 at 19:24