【问题标题】:file.toURI() returning A Wrong value?file.toURI() 返回一个错误的值?
【发布时间】:2013-04-04 06:10:49
【问题描述】:

我在 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/”附加到该值,因此它变为 文件:/C:/eclipse%203.7.2/eclipse/http:/www.google.com

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

file.toURI() 

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

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

【问题讨论】:

  • Google.com 不是您的桌面,这就是它附加 Eclipse 位置的原因,但是 c:\Program Files 是您系统的一部分,我认为但不确定..不要忘记您正在使用桌面
  • 你为什么要用字符串“http://www.google.com”创建File?那是行不通的。您正在使用“http://www.google.com”,就好像它是一个文件名一样。
  • google.com 就是一个例子。我正在尝试使用存储库路径。路径名以 http:// 开头。任何以 http://, file:/C:/eclipse%203.7.2/eclipse/ 开头的路径都将附加到值中。
  • http 不是“文件”。直接使用URI 类即可。
  • 我尝试删除文件对象并将字符串直接传递给 URI 构造函数。对我来说效果很好。感谢您的建议。

标签: java eclipse eclipse-rcp rcp


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 2015-06-19
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      相关资源
      最近更新 更多