14

我们正在使用一些通过字母(例如 f:\)访问共享驱动器的旧代码。使用 UNC 表示法不是一种选择。我们的 Java 包装应用程序将作为服务运行,作为第一步,我想在代码中显式映射驱动器。有人做过吗?

4

3 回答 3

16

考虑执行映射网络驱动器的 DOS 命令,如下面的代码所示:

String command = "c:\\windows\\system32\\net.exe use f: \\\\machine\\share /user:user password";
Process p = Runtime.getRuntime().exec(command);
...

查看 net use 命令的详细信息:

该命令的语法是:


网络使用
[设备名称 | *] [\\计算机名\共享名[\volume] [密码| *]]
        [/USER:[域名\]用户名]
        [/USER:[虚线域名\]用户名]
        [/USER:[用户名@dotted域名]
        [/智能卡]
        [/已保存]
        [[/删除] | [/坚持:{是| 不}]]

网络使用 {设备名称 | *} [密码 | *] /家

网络使用 [/持久性:{是 | 不}]
于 2008-10-16T14:51:30.897 回答
11

您可以使用 JCIFS

http://jcifs.samba.org/src/docs/api/jcifs/smb/SmbFile.html

或者,如果您想要更高级别的 API 并支持其他协议,如 FTP、Zip 等:

http://commons.apache.org/vfs/filesystems.html

这两个选项都是纯 Java 和跨平台的。

于 2008-10-16T14:55:27.050 回答
5

我认为最简单的方法是使用 Runtime.getRuntime().exec() 方法并调用“net use”命令。

例如:

    try {
        // Execute a command without arguments
        String command = "C:\\Windows\\system32\\net.exe use F: \\\\server\\share /user:user password";
        Process child = Runtime.getRuntime().exec(command);
    } catch (IOException e) {
    }
于 2008-10-16T14:48:11.060 回答