Java Desktop API无法使用网络路径?

时间:2009-08-31 22:07:27

标签: java file-io

  

可能重复:
  Not possible to launch a file on a network using Java Desktop?

我正在尝试使用Desktop API为文件启动相应的应用。所以我正在使用它:

if (Desktop.isDesktopSupported()) 
        Desktop.getDesktop().open(new File(path));

其中“path”是指向文件的String。

在我收到IOException时,一切正常,直到我尝试启动驻留在网络位置的jpg(例如“\\ MyNet \ folder \ image.jpg”):

  

java.io.IOException:无法打开   文件:////MyNet/folder/image.jpg

任何人都知道是否有办法解决这个问题?

4 个答案:

答案 0 :(得分:1)

我认为您需要以标准URI格式指定文件位置/名称 - 除了服务器之外,它接近标准格式。有关详细信息,请参阅URI Class的javadoc。

  

在最高级别,字符串形式的URI引用(以下简称“URI”)具有语法

     

[scheme:] scheme-specific-part [#fragment]

过了一会儿:

  

分层URI需要根据语法进一步解析

     

[scheme:] [//权限] [路径] [?查询] [#fragie]

因此URI应如下所示:

file://MyNet/folder/image.jpg

其中“file://”是协议,“MyNet”是服务器,“/ folder / images.jpg”是共享下的目录位置。

希望这有点帮助。

答案 1 :(得分:0)

file://// MyNet / folder / image.jpg不是文件路径。这是一个URL。

答案 2 :(得分:0)

    File f = new File("\\\\192.168.0.4\\mybookrw\\save\\command.txt");
    Desktop.getDesktop().open(f);

对我来说很好。需要注意的是,您必须已经对该共享进行了身份验证。如果您将路径粘贴到运行框中,它会提示您输入用户名和密码,那么它将无法从应用程序中运行。

答案 3 :(得分:0)

到目前为止,每个人都认为找不到该文件。

但是,查看Desktop open()函数会抛出IOException

  

如果指定的文件没有关联   申请或相关的   应用程序无法启动

现在,说过,如果你在本地机器上打开jpg会怎么样?此外,如果您尝试通过网络手动启动jpg会发生什么?

编辑:实际上,问题可能是设置为打开jpg文件的默认程序无法理解file:// uris。坚持使用UNC路径可能是更好的选择。