Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问名称为未知编码的文件_Java_Encoding_Filenames_Nio - Fatal编程技术网

Java 访问名称为未知编码的文件

Java 访问名称为未知编码的文件,java,encoding,filenames,nio,Java,Encoding,Filenames,Nio,在浏览linux机器(可能还有其他Unix)的文件树时,我会遇到使用不同于Java默认字符集(charset.defaultCharset())返回的编码的文件或目录名。 这是因为用户可以更改自己的区域设置,并编写一个文件或目录,该文件或目录的名称由用户的自定义区域设置编码 我希望遍历整个文件系统(例如使用Files.walkFileTree),并且对于遇到的每个文件/dir,始终能够存储一些内容,以便以后可以成功地创建指向该文件/dir的新路径对象 但是,如果我遇到一个文件/dir,其名称用未

在浏览linux机器(可能还有其他Unix)的文件树时,我会遇到使用不同于Java默认字符集(charset.defaultCharset())返回的编码的文件或目录名。 这是因为用户可以更改自己的区域设置,并编写一个文件或目录,该文件或目录的名称由用户的自定义区域设置编码

我希望遍历整个文件系统(例如使用Files.walkFileTree),并且对于遇到的每个文件/dir,始终能够存储一些内容,以便以后可以成功地创建指向该文件/dir的新路径对象

但是,如果我遇到一个文件/dir,其名称用未知编码编码,我将无法再次访问该文件

为了说明这个问题,在RHEL6机器上,我在“/home/languages”下有一个dir,其名称用编码he_IL.iso88598编码,系统的区域设置也是he_IL.iso88598 以下代码使用平台的默认编码对名称进行一次解码,并将其解码为UTF-8:

Path source = Paths.get("/home/languages");

Files.walkFileTree(source, new SimpleFileVisitor<Path>() {

@Override
public FileVisitResult preVisitDirectory(Path dir,
        BasicFileAttributes attrs) throws IOException {

    String badName = new String(dir.toString().getBytes("UTF8"));
    String name = dir.toString();
    Files.exists(Paths.get(name));                  
    Files.exists(Paths.get(badName))
    return FileVisitResult.CONTINUE;
}
Java能够访问文件/目录,即使它们的编码在walkFileTree中未知一次,那么为什么我不能再次访问这些路径呢

谢谢

请参阅以下讨论:

这是:

文件库中已知的旧错误

使用java.nio.file包(文件和路径)的建议参见以下讨论:

这是:

文件库中已知的旧错误


建议使用java.nio.file包(文件和路径)

谢谢@guillome的回复,但是我认为我没有使用file或任何其他java.io库。我更新了问题,使之更具体。感谢@guillaume的回复,但是我认为我没有使用File或任何其他java.io库。我更新了问题,使之更加具体。
Exception in thread "main" java.nio.file.InvalidPathException: Malformed input or input contains unmappable chacraters: /home/languages/?¢??¨??×