相关疑难解决方法(0)

Java无法在文件名中打开具有代理Unicode值的文件?

我正在处理使用文件执行各种IO操作的代码,我想让它能够处理国际文件名.我正在使用Java 1.5处理Mac,如果文件名包含需要代理的Unicode字符,则JVM似乎无法找到该文件.例如,我的测试文件是:

"???.gif" 它被分解为Java字符 \u8349\uD85B\uDFF6\u9DD7\u5916.gif

如果我从这个文件名创建一个文件,我无法打开它,因为我得到一个FileNotFound异常.即使在包含该文件的文件夹上使用它也会失败:

File[] files = folder.listFiles(); 
for (File file : files) {
    if (!file.exists()) {
        System.out.println("Failed to find File"); //Fails on the surrogate filename
    }
}
Run Code Online (Sandbox Code Playgroud)

我实际处理的大部分代码都是以下形式:

FileInputStream instream = new FileInputStream(new File("???.gif"));
// operations follow
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题,要么转义文件名,要么以不同的方式打开文件?

java unicode filenames file surrogate-pairs

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

file ×1

filenames ×1

java ×1

surrogate-pairs ×1

unicode ×1