Ответ 1
Может ли это быть связано с Ошибка File.exists() с символами Unicode в имени
Как открыть файл со специальным символом, который Java отказался открывать?
В начале я предполагаю, что это была проблема кодировки кодировки, поскольку я неправильно прочитал имя файла из файла журнала. Но позже я обнаружил, что это может быть ошибка JVM, и мне нужно обходное решение.
Реальный пример лучше, чем слова
import java.io.*;
public class WTF{
public static void main(String[] s)throws Exception{
File f2=new File(".");
for (File subFile : f2.listFiles()) {
System.out.println(subFile.getName());
System.out.println(subFile.exists());
System.out.println(new FileInputStream(subFile));
}
}
}
В результате
[[email protected] ZZZ]$ java -cp . WTF
WTF.class
true
[email protected]
WTF.java
true
[email protected]
ABC_�%81DEF.txt
false
Exception in thread "main" java.io.FileNotFoundException: ABC_�%81DEF.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at WTF.main(WTF.java:8)
И папка содержит
[[email protected] ZZZ]$ ls -lb
-rw-r--r-- 1 USER GROUP 8 Apr 14 20:54 ABC_\303%81DEF.txt
-rw-r--r-- 1 USER GROUP 1068 Apr 14 20:58 WTF.class
-rw-r--r-- 1 USER GROUP 554 Apr 14 20:58 WTF.java
Может ли это быть связано с Ошибка File.exists() с символами Unicode в имени
Возможным обходным решением будет использование системной команды для переименования или ссылки на файл с использованием только стандартных "дружественных" символов. Кажется взломанным, но я думаю, что это сработает.