हम कुछ विरासत कोड के साथ काम कर रहे हैं जो पत्र द्वारा साझा ड्राइव तक पहुंचता है (उदाहरण के लिए \ f: \)। यूएनसी नोटेशन का उपयोग करना एक विकल्प नहीं है। हमारा जावा रैपर ऐप एक सेवा के रूप में चलाएगा, और पहले चरण के रूप में, मैं कोड को स्पष्ट रूप से कोड में मैप करना चाहता हूं। क्या किसी ने ऐसा किया है?मैं जावा में विंडोज ड्राइव कैसे माउंट कर सकता हूं?
उत्तर
डॉस कमांड कि निम्नलिखित कोड में के रूप में एक नेटवर्क ड्राइव मैप को क्रियान्वित करने पर विचार करें:
The syntax of this command is: NET USE [devicename | *] [\\computername\sharename[\volume] [password | *]] [/USER:[domainname\]username] [/USER:[dotted domain name\]username] [/USER:[[email protected] domain name] [/SMARTCARD] [/SAVECRED] [[/DELETE] | [/PERSISTENT:{YES | NO}]] NET USE {devicename | *} [password | *] /HOME NET USE [/PERSISTENT:{YES | NO}]
क्या होता है यदि उपयोगकर्ता पहले से ही मैप किया गया है f :? क्या होता है यदि हम एक ही कार्यक्रम को दो बार चलाते हैं और इसे मध्य में मारते हैं (उदा। डीबगिंग सत्र के दौरान)? – ddimitrov
यदि उपयोगकर्ता पहले ही ड्राइव एफ मैप कर चुका है: आपको "सिस्टम त्रुटि 85 हुई है।" प्रक्रिया आउटपुट में। आप बस इसके लिए स्कैन कर सकते हैं। –
मुझे लगता है कि सबसे आसान तरीका Runtime.getRuntime()। Exec() विधि का उपयोग करना है और "नेट उपयोग" कमांड को कॉल करना है।
उदाहरण के लिए:
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) {
}
सीधे net.exe का उपयोग कर त्रुटि मामलों को संभाल नहीं करता है और प्लेटफॉर्म तटस्थ नहीं है। – munsingh
String command = "c:\\windows\\system32\\net.exe use f: \\\\machine\\share /user:user password";
Process p = Runtime.getRuntime().exec(command);
...
शुद्ध उपयोग आदेश पर विवरण देखें
आप जेसीआईएफएस
का उपयोग कर सकते हैंhttp://jcifs.samba.org/src/docs/api/jcifs/smb/SmbFile.html
या यदि आप एफ़टीपी, ज़िप और दूसरों की तरह अन्य प्रोटोकॉल के लिए उच्च स्तर एपीआई और समर्थन चाहते हैं:
http://commons.apache.org/vfs/filesystems.html
दोनों विकल्पों के जावा और पार मंच शुद्ध कर रहे हैं।
यदि यह 'उपयोगकर्ताओं' के लिए है, तो वर्णमाला के अंत की ओर एक पत्र चुनने पर विचार करें जो एक या दो यूएसबी डिवाइस प्लग इन करके अनुपलब्ध नहीं होगा। – Cheekysoft
अच्छी सलाह है। यूएसबी डिवाइस पहले उपलब्ध लेते हैं। हमारे मामले में, पसंद का पत्र हमारे नियंत्रण से बाहर है। हमें बस इसे मैप करने की जरूरत है। –