2017-10-18 168 views
1

为什么有这种差异?为什么'Files.exists'返回true,但'File.exists'返回false?它只发生在多字节字符的文件名中

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 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)) 

这个应用程序服务,并使用我的springBoot库。

使用'nio'进行读取/写入没有问题,但使用'io.File'会导致'FileNotFoundException'。

有什么我做错了吗?

+1

它是一个符号链接?你使用的是什么版本的Java?我似乎无法在'Paths'或'Path'(to'toPath')找到'exist'这个事情 – MadProgrammer

+0

FYI:'java.io'不处理符号链接,其中'java.nio'的确如此一个更好的工作) – MadProgrammer

+2

那么最新的问题是什么?也因为你使用的是非常老的linux,并且你的名字看起来像日语,你使用的是“euc-jp”还是“shift-jis”字符代码?你使用的是什么文件系统? – ymonad

回答

0

如果你的意思

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文件

+0

没错,我很抱歉。它不是'toPath',而是'toFile'。 该目标是日文名称目录和PDF文件。 docDir.toFile()。 exists():false –

+0

尝试将它作为/ tmp /テスト/テスト.txt,因为它工作正常 –

相关问题