Java file.listfiles () возвращает файлы, которые «не существуют» в соответствии с `exist ()`JAVA

Программисты JAVA общаются здесь
Anonymous
Java file.listfiles () возвращает файлы, которые «не существуют» в соответствии с `exist ()`

Сообщение Anonymous »

Я заметил эту проблему в нашем продуктивном коде: < /p>
java.lang.IllegalArgumentException: /somePath/�.png does not exist
at org.apache.commons.io.FileUtils.sizeOf(FileUtils.java:2413)
at org.apache.commons.io.FileUtils.sizeOfDirectory(FileUtils.java:2479)
< /code>
Основная причина заключается в следующем: < /p>
import java.io.File;

public class FileNameTest
{

public static void main(String[] args)
{
File[] files = new File("/somePath").listFiles();
for (File file : files)
{
System.out.println(file + " - " + (file.exists() ? "exists" : "missing!!"));
}
}

}
< /code>
output: < /p>
0.png - exists
7.png - exists
4.png - exists
8.png - exists
1.png - exists
3.png - exists
�.png - missing!!
2.png - exists
5.png - exists
�.png - missing!!
6.png - exists
d.png - exists
$.png - exists
s.png - exists
+.png - exists
9.png - exists
< /code>
«отсутствующие» файлы называются символами «µ» (mu) и «€» (евро). < /p>
Также кажется, что эти имена файлов используют неправильные кодирование. Правильно (по крайней мере, mu). < /p>
Но, тем не менее, ... < /p>

[*] Эти файлы существуют < /li>
file.listfiles () перечисляет их < /li>
для двух специальных случаев: file.exists (). JVM. Кто-нибудь может подтвердить это? Есть идеи, как это исправить? (Переименование файлов не является вариантом, поскольку они генерируются пользователем и могут повторно применять в любой форме или форме.) < /P>
Моя система: < /p>
  • Ubuntu 4.2.0 < /li>
    java rersion "1,8.0_102" < /li>
    1.8.0_102-b14)
  • java Hotspot (TM) 64-битный сервер VM (Build 25.102-B14, смешанный режим)
  • Apache Commons IO 2.4


Подробнее здесь: https://stackoverflow.com/questions/400 ... -to-exists

Вернуться в «JAVA»