是否有一种方法可以将一个有效且现有的Hadoop Path对象转换为一个有用的Java File对象?是否有一种好的方式来完成这个转换,还是需要费尽心思地编写代码?更明显的方法行不通,似乎这应该是一个常见的代码片段。
void func(Path p) {
if (p.isAbsolute()) {
File f = new File(p.toURI());
}
}
由于Path::toURI()返回的是"hdfs"标识符,而Java的File(URI uri)构造函数只能识别"file"标识符,因此这种方法不起作用。
有没有一种方法可以让Path和File共同使用?
**
好的,请给出一个具体的有限例子。
Path[] paths = DistributedCache.getLocalCacheFiles(job);
DistributedCache 应该提供一个本地化的文件副本,但是它返回一个路径(Path)。我假设 DistributedCache 会在同一磁盘上制作文件的本地副本。在这个简单的例子中,我们希望 HDFS 不参与其中,那么有没有一种可靠的方法可以将 Path 转换为 File?
java.nio.file.Path
是可接受的(而不是java.io.File
),这个库似乎很有前途。 - dimo414