Wie kann ich ein Windows-Laufwerk in Java montieren?
-
03-07-2019 - |
Frage
Wir arbeiten mit einigem Legacy-Code, der ein gemeinsam genutzten Laufwerk durch den Buchstaben greift (f: \ zum Beispiel). die UNC-Notation ist keine Option. Unsere Java-Wrapper App wird als Dienst ausgeführt, und als ersten Schritt, würde Ich mag das Laufwerk explizit im Code abzubilden. Hat jemand dies getan?
Lösung
Betrachten Sie den DOS-Befehl ausführt, der ein Netzwerklaufwerk, wie im folgenden Code-Karten:
String command = "c:\\windows\\system32\\net.exe use f: \\\\machine\\share /user:user password";
Process p = Runtime.getRuntime().exec(command);
...
Siehe Details auf Befehl 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}]
Andere Tipps
Sie können mit JCIFS
http://jcifs.samba.org/src/ docs / api / jCIFS / smb / SmbFile.html
oder wenn Sie wollen höhere Level-API und Unterstützung für andere Protokolle wie FTP, ZIP und andere:
http://commons.apache.org/vfs/filesystems.html
Beide Optionen sind reine Java und Cross-Plattform.
Ich denke, der einfachste Weg, um die Runtime.getRuntime zu verwenden ist (). Exec () -Methode und rufen Sie den "net use" -Befehl.
Zum Beispiel:
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) {
}