我在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://或其他方式开头的路径相关的限制。 有没有人对此有任何想法?
答案 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
时,程序会将您的程序位置添加到其开头。
我认为您需要搜索URI
和URL
。你错误地使用了它们!