file.toURI()返回错误的值?

时间:2013-04-04 06:10:49

标签: java eclipse eclipse-rcp rcp

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

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

其中location是String。

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

file.toURI() 

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

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

file.toURI() 

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

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

2 个答案:

答案 0 :(得分:0)

java.io.File适用于文件路径而非URL。

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

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

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

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

答案 1 :(得分:0)

我们有两种类型的文件位置:relative和absolute。当位置类似于MS Windows中的C:\User或Linux中的/home时,位置是绝对的,无需在它们的开头附加内容!但是当位置为http://google.com时,程序会将您的程序位置添加到其开头。

我认为您需要搜索URIURL。你错误地使用了它们!