0

我在 Java RCP 应用程序中工作。我正在执行以下代码行:

File file = new File(location);
String filePath = file.toURI().toString();
Desktop desktop = Desktop.getDesktop();
desktop.browse((new URL(filePath)).toURI());

其中位置是一个字符串。

当 location 的值为:http://www.google.com时,

file.toURI() 

将“file:/C:/eclipse%203.7.2/eclipse/”附加到该值,因此它变为 file:/C:/eclipse%203.7.2/eclipse/http:/www.google.com

但是当值为:C:\Program Files,

file.toURI() 

没有附加任何东西并正确返回相同的值。

是否存在与以 http:// 或其他内容开头的路径相关的限制。有人对此有任何想法吗?

4

2 回答 2

0

java.io.File 使用文件路径而不是 URL。

因此,它将提供的初始化参数转换为本地文件系统支持的表示形式。

“http://”对您的本地文件系统没有任何意义,它只是一个文件名(好吧,错误的文件名,但无论如何)。

在“ http://www.google.com ”的第一种情况下,它在提供的值中看不到磁盘驱动器号,因此它被视为相对路径,当前工作目录绝对路径添加为前缀(“user.home” env var 如果我没记错的话)。

在第二种情况下,您添加了一个绝对路径“C:\Program Files”。它在里面看到磁盘驱动器号,添加任何东西作为前缀是没有意义的。

于 2013-04-04T06:42:54.417 回答
0

我们有两种类型的文件位置:相对和绝对。当位置类似于C:\UserMS Windows 或/homeLinux 中的位置时,位置是绝对的,不需要在它们的开头附加一些东西!但是当位置是程序时,http://google.com将您的程序位置附加到它的开头。

我认为您需要搜索URIand URL。你用错了!

于 2013-04-04T06:44:25.580 回答