Java 为什么';存在';返回true,但';存在';返回错误?仅当文件名为多字节字符时才会出现此错误

Java 为什么';存在';返回true,但';存在';返回错误?仅当文件名为多字节字符时才会出现此错误,java,linux,file,nio,java-io,Java,Linux,File,Nio,Java Io,你为什么会有这种差异 Path docDir Paths.exists(docDir):true docDir.toPath().exists():false 其他属性: Files.isDirectory(docDir)=true Files.isExecutable(docDir)=true Files.isHidden(docDir)=false Files.isReadable(docDir)=true Files.isRegularFile(docDir)=false Files.

你为什么会有这种差异

Path docDir

Paths.exists(docDir):true
docDir.toPath().exists():false
其他属性:

Files.isDirectory(docDir)=true
Files.isExecutable(docDir)=true
Files.isHidden(docDir)=false
Files.isReadable(docDir)=true
Files.isRegularFile(docDir)=false
Files.isSymbolicLink(docDir)=false
Files.isWritable(docDir)=true
Files.notExists(docDir)=false
单字节字符串中不会出现此问题

Linux版本是

Linux version 2.6.32-431.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) )
这个应用程序是服务,我使用springBoot库

使用'nio'进行读/写操作没有问题,但使用'io.File'将导致'FileNotFoundException'

我做错什么了吗?如果你是说

    String fileName = "テスト.txt";
    Path docDir = new File ("/tmp/" + fileName).toPath();
    System.out.println(Files.exists(docDir));
    System.out.println(docDir.toFile().exists());
然后在CentOS 6.8版(最终版)中对我适用

虽然我确实记得zip文件中有类似的内容

    String fileName = "テスト.txt";
    Path docDir = new File ("/tmp/" + fileName).toPath();
    System.out.println(Files.exists(docDir));
    System.out.println(docDir.toFile().exists());
然后在CentOS 6.8版(最终版)中对我适用


虽然我记得zip文件中有类似的内容

但它是一个符号链接吗?您使用的是什么版本的Java?我似乎找不到
存在于
路径
路径
(to
toPath
)中的
这个问题。yi:
java.io
不处理符号链接,而
java.nio
处理的是符号链接(更好的工作),那么出现问题的实际字符是什么呢?另外,由于您使用的是非常旧的linux,而且您的名字看起来像日语,您是否使用类似“euc jp”或“shift jis”的字符代码?您使用的文件系统是什么?版本4.4.7 20120313-升级时间?为什么不添加
ls
输出以查看目录的外观?它是一个符号链接吗?您使用的是什么版本的Java?我似乎找不到
存在于
路径
路径
(to
toPath
)中的
这个问题。yi:
java.io
不处理符号链接,而
java.nio
处理的是符号链接(更好的工作),那么出现问题的实际字符是什么呢?另外,由于您使用的是非常旧的linux,而且您的名字看起来像日语,您是否使用类似“euc jp”或“shift jis”的字符代码?您使用的文件系统是什么?版本4.4.7 20120313-升级时间到了?为什么不添加
ls
输出以查看目录的外观?没错,对不起。它不是“toPath”,而是“toFile”。此目标是一个日文名称目录和一个PDF文件。docDir.toFile()。exists():false是的,对不起。它不是“toPath”,而是“toFile”。此目标是一个日文名称目录和一个PDF文件。docDir.toFile()。exists():false