2008-10-16 18 views
11

हम कुछ विरासत कोड के साथ काम कर रहे हैं जो पत्र द्वारा साझा ड्राइव तक पहुंचता है (उदाहरण के लिए \ f: \)। यूएनसी नोटेशन का उपयोग करना एक विकल्प नहीं है। हमारा जावा रैपर ऐप एक सेवा के रूप में चलाएगा, और पहले चरण के रूप में, मैं कोड को स्पष्ट रूप से कोड में मैप करना चाहता हूं। क्या किसी ने ऐसा किया है?मैं जावा में विंडोज ड्राइव कैसे माउंट कर सकता हूं?

+0

यदि यह 'उपयोगकर्ताओं' के लिए है, तो वर्णमाला के अंत की ओर एक पत्र चुनने पर विचार करें जो एक या दो यूएसबी डिवाइस प्लग इन करके अनुपलब्ध नहीं होगा। – Cheekysoft

+0

अच्छी सलाह है। यूएसबी डिवाइस पहले उपलब्ध लेते हैं। हमारे मामले में, पसंद का पत्र हमारे नियंत्रण से बाहर है। हमें बस इसे मैप करने की जरूरत है। –

उत्तर

15

डॉस कमांड कि निम्नलिखित कोड में के रूप में एक नेटवर्क ड्राइव मैप को क्रियान्वित करने पर विचार करें:

 
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}] 
+0

क्या होता है यदि उपयोगकर्ता पहले से ही मैप किया गया है f :? क्या होता है यदि हम एक ही कार्यक्रम को दो बार चलाते हैं और इसे मध्य में मारते हैं (उदा। डीबगिंग सत्र के दौरान)? – ddimitrov

+0

यदि उपयोगकर्ता पहले ही ड्राइव एफ मैप कर चुका है: आपको "सिस्टम त्रुटि 85 हुई है।" प्रक्रिया आउटपुट में। आप बस इसके लिए स्कैन कर सकते हैं। –

4

मुझे लगता है कि सबसे आसान तरीका 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) { 
    } 
+0

सीधे net.exe का उपयोग कर त्रुटि मामलों को संभाल नहीं करता है और प्लेटफॉर्म तटस्थ नहीं है। – munsingh

9
:

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

दोनों विकल्पों के जावा और पार मंच शुद्ध कर रहे हैं।

संबंधित मुद्दे