How can I mount a windows drive in Java?

匿名 (未验证) 提交于 2019-12-03 02:08:02

问题:

We are working with some legacy code that accesses a shared drive by the letter (f:\ for example). Using the UNC notation is not an option. Our Java wrapper app will run as a service, and as the first step, I would like to map the drive explicitly in the code. Has anyone done this?

回答1:

Consider executing the DOS command that maps a network drive as in the following code:

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

See details on net use command:

The syntax of this command is:   NET USE [devicename | *] [\\computername\sharename[\volume] [password | *]]         [/USER:[domainname\]username]         [/USER:[dotted domain name\]username]         [/USER:[username@dotted domain name]         [/SMARTCARD]         [/SAVECRED]         [[/DELETE] | [/PERSISTENT:{YES | NO}]]  NET USE {devicename | *} [password | *] /HOME  NET USE [/PERSISTENT:{YES | NO}]


回答2:

You can use JCIFS

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

or if you want higher level API and support for other protocols like FTP, Zip and others:

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

Both options are pure Java and cross platform.



回答3:

I think the easiest way is to use the Runtime.getRuntime().exec() method and call the "net use" command.

For example:

    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) {     }


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!