在Java中获取原始文件名?

4
在Windows操作系统中,我有一个文件,例如“README”。
使用Java,File("readme").exists()将返回true。
如何获取真正的文件名,类似于这样:
  new File("readme").getTrueFileName()  //return "README"
2个回答

7

看一下File.getCanonicalPath - 它返回“真实”的文件名。

还有File.getCanonicalFile,它返回相同的信息但作为一个File对象。

(我刚刚用你的确切情况测试了一下,它可以正常工作。)


File.getAbsolutePath 怎么样? - Harry Joy
1
@Harry:File.getAbsolutePath 不会解析符号链接(或者至少 javadocs 没有提到符号链接)。它只是将相对路径转换为绝对路径。它并不是“真实”的路径,因为它仍然可能包含符号链接。 - Cameron Skinner
@Cameron:OP想要文件名,为什么不直接使用getName() - Harry Joy
@Harry:再说一遍,这并没有找到磁盘上的文件名 - 它只返回已经构建的File对象的名称部分。 - Jon Skeet
@Jon Skeet:OP说他只想要文件名"new File("readme").getTrueFileName() //返回"README""。无论如何,OP已经接受了您的答案,所以也许这就是他想要的,而我可能误解了他的意思。 - Harry Joy
@Harry:但他想要的是磁盘上的真实文件名,而不是原始File中的文件名。 getAbsolutePathgetName都不会查看文件系统并发现被称为“readme”的文件实际上被称为“README”。 - Jon Skeet

4
你可以尝试使用File.getCanonicalPath。我没有Windows电脑来测试,所以这只是一次猜测。

嘿。好吧,如果Jon Skeet建议同样的事情,那么我想这不是一个完全疯狂的尝试 :) - Cameron Skinner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接