如果拒绝打开文件名中带有特殊字符的文件,如何修复Java?

如何打开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));

}

}

}

结果

[USER@SERVER ZZZ]$ java -cp . WTF

WTF.class

true

java.io.FileInputStream@732dacd1

WTF.java

true

java.io.FileInputStream@3bad086a

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)

文件夹包含

[USER@SERVER 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字符失败

以上是 如果拒绝打开文件名中带有特殊字符的文件,如何修复Java? 的全部内容, 来源链接: utcz.com/qa/410486.html

回到顶部