Comment puis-je monter un lecteur Windows en Java?
-
03-07-2019 - |
Question
Nous travaillons avec un code hérité qui accède à un lecteur partagé par la lettre (f: \ par exemple). L'utilisation de la notation UNC n'est pas une option. Notre application d'encapsulation Java s'exécutera en tant que service et, dans un premier temps, j'aimerais mapper explicitement le lecteur dans le code. Quelqu'un l'a-t-il fait?
La solution
Pensez à exécuter la commande DOS qui mappe un lecteur réseau comme dans le code suivant:
String command = "c:\\windows\\system32\\net.exe use f: \\\\machine\\share /user:user password";
Process p = Runtime.getRuntime().exec(command);
...
Voir les détails sur la commande net use:
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}]
Autres conseils
Vous pouvez utiliser JCIFS
http://jcifs.samba.org/src/ docs / api / jcifs / smb / SmbFile.html
ou si vous souhaitez une API de niveau supérieur et une prise en charge d'autres protocoles tels que FTP, Zip et autres:
http://commons.apache.org/vfs/filesystems.html
Les deux options sont Java pur et multiplateformes.
Je pense que le moyen le plus simple consiste à utiliser la méthode Runtime.getRuntime (). exec () et à appeler le paramètre "net use". commande.
Par exemple:
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) {
}