Java에서 Windows 드라이브를 어떻게 장착 할 수 있습니까?
-
03-07-2019 - |
문제
우리는 문자로 공유 드라이브에 액세스하는 일부 레거시 코드 (f : )로 작업하고 있습니다. UNC 표기법을 사용하는 것은 옵션이 아닙니다. Java Wrapper 앱은 서비스로 실행되며 첫 번째 단계로 코드에 드라이브를 명시 적으로 매핑하고 싶습니다. 누구든지 이것을 한 사람이 있습니까?
해결책
다음 코드에서와 같이 네트워크 드라이브를 맵핑하는 DOS 명령을 실행하는 것을 고려하십시오.
String command = "c:\\windows\\system32\\net.exe use f: \\\\machine\\share /user:user password";
Process p = Runtime.getRuntime().exec(command);
...
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}]
다른 팁
JCIF를 사용할 수 있습니다
http://jcifs.samba.org/src/docs/api/jcifs/smb/smbfile.html
또는 더 높은 레벨 API를 원하고 FTP, Zip 및 기타와 같은 다른 프로토콜을 지원하는 경우 :
http://commons.apache.org/vfs/filesystems.html
두 옵션 모두 순수한 Java 및 크로스 플랫폼입니다.
가장 쉬운 방법은 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) {
}
제휴하지 않습니다 StackOverflow