1

目前,我在 Guava API 的帮助下使用以下代码从类路径加载属性文件:

final URL fileURL = Resources.getResource("res.properties");
final File file = new File(fileURL.getFile());

我决定尝试 Java7SE 中引入的新 NIO2 API 并删除任何 Guava API 调用,因此我将代码转换为以下内容:

final URL fileURL = getClass().getResource("/res.properties");
final Path path = Paths.get(fileURL.toURI());

URL但是修改后的代码在和之间发生转换的那一行会抛出一个检查异常URI。有什么办法可以摆脱它。例如,我可以得到一个Path给定URL的实例吗?

PS 我知道修改后的代码在语义上与原始代码不同 -如果找不到资源,则Guava 会getResource抛出,在这种情况下,Java 会返回。IllegalArgumentExceptiongetResourcenull

4

2 回答 2

1

你可以使用:

final File file = new File(fileURL.getFile());
final Path path = file.toPath(); //can throw an unchecked exception
于 2013-08-28T11:21:10.073 回答
0

这是我发现的:

final URL fileURL = getClass().getResource("/res.properties");
final URI fileURI = URI.create(fileURL.toString());
final Path path = Paths.get(fileURI);
于 2013-08-29T11:52:12.493 回答