Java 7:获取资源路径(作为Path类型的对象)

27

我正在使用Java 7的功能来读取文件。为此,我需要一个Path类型的对象。在我的代码中,我使用getResource()函数获取文件的相对路径(类型为URL)。

但是,现在我遇到了一个问题,即我不知道如何轻松地从URL类型的对象转换为Path类型的对象(无需进行强制转换,例如转换为URI,然后再转换为File,最后才转换为Path)。

这里是一个示例,展示我想要做的事情:

URL url = getClass().getResource("file.txt");
Path path = (new File(url.toURI())).toPath(); //is there an easier way?
List<String> list = Files.readAllLines(path, Charset.defaultCharset());

那么有没有更简单的方法来实现这个,而不必在第2行搞出那些混乱的代码呢?

2个回答

37

怎么样?

Path path = Paths.get(url.toURI());

从您的URL创建文件不是合适的,因为它来自类路径,而文件实际上可能在jar包中。


2
出于好奇,如果资源实际上在一个JAR文件中,你会得到什么样的路径? - Hakanai

0
在Scala中将会是这样的
import java.nio.file.Paths

val resource = getClass.getResource("myfile.txt")
val path = Paths.get(resource.toURI)

在Java中应该是一样的(语法略有不同)


3
尽管如此,我并不认为这个答案真正提供了其他答案没有提供的任何东西。 - Simon Forsberg
它确实展示了如何获取资源的 URI。 - BillRobertson42

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