相关疑难解决方法(0)

设置java语言环境设置

当我在我的linux机器上使用默认的java语言环境时,它提供了美国语言环境设置,我在哪里更改它以便它出现正确的语言环境?

java locale

34
推荐指数
6
解决办法
13万
查看次数

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万
查看次数

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

如何打开一个具有Java拒绝打开的特殊字符的文件?

一开始我觉得这是一个字符集编码问题,因为我从日志文件中读取错误的文件名.但后来我发现,它可能是JVM的一个bug,我需要一个解决方法.

真实的例子比单词更好

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));
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

结果

[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)
Run Code Online (Sandbox Code Playgroud)

并且文件夹包含

[USER@SERVER ZZZ]$ ls -lb
-rw-r--r-- 1 USER GROUP    8 Apr 14 20:54 ABC_\303%81DEF.txt
-rw-r--r-- …
Run Code Online (Sandbox Code Playgroud)

java linux file-io

11
推荐指数
1
解决办法
5316
查看次数

标签 统计

java ×3

file ×1

file-io ×1

filenames ×1

linux ×1

locale ×1

surrogate-pairs ×1

unicode ×1