当前位置: 首页 > 面试题库 >

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

傅阿苏
2023-03-14
问题内容

如何打开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字符失败



 类似资料:
  • 问题内容: 我试图编写一个文件名带有特殊字符的文件,例如“téééê.mp3”,但文件名始终保留“?” 我尝试了几种方法来代替字符“é”,但没有找到解决方法: 我也尝试过这种方式。 问题答案: 尝试: 现在,如果这是您的文件系统不支持此类文件名的问题,您将得到一个;。不同于,新的API拒绝创建可能最终无法读取的文件名。 如果确实无法创建路径,那么,您将必须找到某种逃避和撤消逃避的方法。也许写一个别

  • 问题内容: 我试图用来从一些.csv文件中获取数据。只要文件名或文件路径中没有重音(例如ä,é,ü),此方法就可以正常工作。当我使用诸如这样的文件名时,出现以下错误:。我的代码是: 我正在使用pandas 0.20.1和python 3.6.0。我发现这在以前的版本中是一个问题,但我认为它已解决。有想法该怎么解决这个吗?我也发现了这个:https : //github.com/pandas- de

  • 如何在React和JSX中导入名称中带有特殊字符的JS文件? 我可以的 (该文件夹包含moother.js和tomrorrow night.js) 但我不能:

  • 问题内容: 我在编译带有类名特殊字符的源文件时遇到问题。该类文件可以在Eclipse IDE中正常编译,但不能从javac中编译。我认为我需要利用该标志,但尚未达到正确的设置。我将不胜感激任何指针: 档案名称: DeptView和SDO.java Java资料来源: 错误信息: 运行会导致以下错误消息: 更新 我目前正在Windows XP命令提示符下尝试编译 最终,此编译将需要成为ant构建的一

  • 我在从AWS下载上面的文件时遇到了一些麻烦。我试图用CouldBerry Explore和Java下载这个文件,但失败了。aws文档说我需要特殊的处理。(https://docs.aws.amazon.com/amazons3/latest/dev/usingmetadata.html)那么,你能告诉我如何用“:”下载这个文件吗? 以下是我的文件信息。 文件名:“E:\home\temp\test

  • 问题内容: 我正在编写一个简单的文件下载servlet,但无法获取正确的文件名。尝试使用URLEncoding和MimeEncoding在现有答案中看到的文件名,但没有一个起作用。 以下代码段中的fileData对象包含mime类型,byte []内容和文件名,它们至少需要ISO-8859-2字符集,而ISO-8859-1不够。 如何使我的浏览器正确显示下载的文件名? 这是文件名的示例:árvíz