从 java.io.File 获取 java.nio.file.Path 对象
Posted
技术标签:
【中文标题】从 java.io.File 获取 java.nio.file.Path 对象【英文标题】:Get java.nio.file.Path object from java.io.File 【发布时间】:2013-03-08 21:03:48 【问题描述】:是否可以从java.io.File
获取 Path 对象?
我知道您可以使用toFile()
方法将路径转换为文件,但我找不到相反的转换。有没有办法在 Java 6 或更低版本中做到这一点?
【问题讨论】:
你看过 API 文档了吗? 是的,我看到了 resolve 和 resolveSibling 方法,但这并没有完全从文件(或字符串)转换为路径,而是以某种方式连接它。 这里是documentation @VivinPaliath 也在暗指。 最愚蠢的问题(我的意思是,拜托,它在文档中,简短的谷歌搜索会回答它)让我在网站上获得最多分数,这让我感到惊讶。 :D @Karlovsky120 如果您自己尝试用谷歌搜索它,您应该不会感到惊讶;) 【参考方案1】:是的,您可以使用File.toPath()
从File
对象中获取它。请记住,这仅适用于 Java 7+。 Java 6 及以下版本没有。
【讨论】:
有没有办法在 Java 6 或更低版本中实现这一点?Path
是在 Java 7 中引入的,所以很遗憾在 Java 6 及更低版本中无法做到这一点。【参考方案2】:
你可能想要File.toPath()
。
【讨论】:
【参考方案3】:来自the documentation:
与默认
provider
关联的路径通常是可互操作的 与java.io.File
类。其他提供者创建的路径是 不太可能与所代表的抽象路径名称互操作 通过java.io.File
。toPath
方法可用于从 由 java.io.File 对象表示的抽象路径名。 生成的 Path 可用于操作与java.io.File
对象。 此外,toFile
方法对于 从Path
的String
表示构造File
。
(强调我的)
所以,对于toFile
:
返回代表此路径的
File
对象。
还有toPath
:
返回从 this 抽象路径构造的
java.nio.file.Path
对象。
【讨论】:
我不反对 :)。我只是提到了 OP 想要什么。【参考方案4】:正如许多人所建议的,JRE v1.7 及更高版本具有 File.toPath();
File yourFile = ...;
Path yourPath = yourFile.toPath();
在Oracle的jdk 1.7 documentation上面其他帖子也提到过,在toPath()方法的描述中描述了以下等效代码,它可能适用于JRE v1.6;
File yourFile = ...;
Path yourPath = FileSystems.getDefault().getPath(yourFile.getPath());
【讨论】:
以上是关于从 java.io.File 获取 java.nio.file.Path 对象的主要内容,如果未能解决你的问题,请参考以下文章
java.io.file对象中获取文件长度时 调用length方法 返回的是文件占用空间大小.如何获取文件自身的大小呢?