如何使用Java在联网计算机上打开目录

如何使用Java在联网计算机上打开目录,java,Java,我已经试过了 String userHomePath = "\\mysvr\\project\\my Team\\001 test\\001 test\\003 Report"; File userHome = new File(userHomePath); try { Desktop.getDesktop().open(userHome); } catch (IOException e) { // TODO Auto-genera

我已经试过了

    String userHomePath = "\\mysvr\\project\\my Team\\001 test\\001 test\\003 Report";
    File userHome = new File(userHomePath);
    try {
        Desktop.getDesktop().open(userHome);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
为什么它打不开?请给我解释一下。因为空白?如果是这样,我该如何修复它。谢谢

这是一个例外:

java.io.IOException: Failed to open file:////mysvr/project/my%20Team/001%20test/001%20test/003%20Report/. Error message: The system cannot find the file specified.
    at sun.awt.windows.WDesktopPeer.ShellExecute(Unknown Source)
    at sun.awt.windows.WDesktopPeer.open(Unknown Source)
    at java.awt.Desktop.open(Unknown Source)
    at org.ace.insurance.fire.renewal.Test.main(Test.java:13)
我可以一直打开到\mysvr\project。

使用//mysvr/project/。。。或\\\\mysvr\\project\\

当然,首先在Windows资源管理器中尝试一下。将Java字符串文本中的任何反斜杠加倍。

尝试以下操作:

   String userHomePath = "\\\\mysvr\\project\\my Team\\001 test\\001 test\\003 Report";
File userHome = new File(userHomePath);
try {
    Desktop.getDesktop().open(userHome);
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

包括引号作为路径的一部分:

String userHomePath = "\"\\mysvr\\project\\my Team\\001 test\\001 test\\003 Report\"";
添加了//mysvr/project/。。。或\\\\mysvr\\project\\。。。正如@Joop Eggen和其他人已经提到的,你的代码对我也有效

如果没有双正斜杠,它就不会。因此,在资源管理器中检查文件夹的可用性,以及它是否可用或存在等

如果两个条件都满足,那么我不知道还有什么建议


另外,两种情况下引发的异常是相同的:java.lang.IllegalArgumentException

您是否尝试过\\\\mysvr\\project\\?请发布堆栈跟踪或对问题的描述,而不是它无法打开。否,第一个-\\\\mysvr\\project\\my Team等只需要四个反斜杠。这很奇怪-错误消息表明文件名上存在URL编码,我认为新文件不会这样做。就我个人而言,我要做的不是猜测指定位置的正确方法,而是组合一个小Swing应用程序,使用JFileChooser导航到并选择位置。换句话说,让Java告诉您它认为位置的路径是什么;。然后尝试Desktop.getDesktop.browseuserHome.toURL;。然而,我现在感到好奇:你有没有尝试过在道路上使用空格?我有一个发痒的想法,即空格是OP的关键。那么,答案就简单了:操作系统没有说谎,路径——实际上——不存在:你确定可以从Windows资源管理器访问服务器吗?