2012-10-16 25 views
5

मैं जावा में File.listRoots() का उपयोग कर अपने डेस्कटॉप में सभी उपलब्ध ड्राइव सूचीबद्ध कर रहा हूं। मेरे पास कुछ मैप किए गए ड्राइव हैं। जब मैं जड़ें सूचीबद्ध करता हूं तो यह मुझे स्थानीय ड्राइव के साथ-साथ मैप किए गए ड्राइव ला रहा है। आदेश मैप की ड्राइव को बाहर करने में मैं निम्नलिखित कोड स्निपेट का प्रयोग किया:स्थानीय ड्राइव से मैप किए गए ड्राइव की पहचान

for (File drive :File.listRoots()){ 
    String typeDescription = FileSystemView.getFileSystemView().getSystemTypeDescription(drive); 
} 

प्रकार वर्णन के आधार पर लौट आए मैं ड्राइव को छानने कर रहा हूँ। लेकिन यह सार्वभौमिक मानक नहीं है और अन्य ऑपरेटिंग सिस्टम द्वारा स्वीकार्य नहीं है। केवल विंडोज़ के लिए समर्थित है। इसके अलावा एक भाषा प्रतिबंध भी है (अंग्रेजी केवल प्रकार के विवरण के लिए समर्थित है)। क्या कोई मुझे वैश्विक स्तर पर मैप किए गए ड्राइव को फ़िल्टर करने के लिए कोई अन्य समाधान दे सकता है।

नोट:
यह केवल Windows में JDK1.6

+1

कोई अन्य समाधान मंच विशिष्ट होगा। लेकिन चूंकि _ सभी उपलब्ध ड्राइव_ एक पूरी तरह से एक विंडोज शब्द है, तो आप शायद विंडोज़ केवल समाधान की तलाश में हैं? –

+0

@ ओलेग मिकहेव। हाँ .. मैं केवल खिड़कियों में समाधान के लिए देख रहा हूं। लेकिन लिनक्स मशीन में File.listRoots() केवल रूट डीआईआर देता है। तो लिनक्स में कोई समस्या नहीं है। मुझे विंडोज प्लेटफ़ॉर्म में मैप किए गए ड्राइव और स्थानीय ड्राइव के बीच अंतर करने की आवश्यकता है ... –

+0

मेरा उत्तर हटा दिया गया। मैंने बस ओएस एक्स पर कोशिश की और मुझे आपकी समस्या दिखाई दे रही है। अगर मैं कुछ भी सोचता हूं तो मैं एक और जवाब पोस्ट करूंगा। – Dave

उत्तर

1

के लिए विशिष्ट हैं आपकी समस्या है होना चाहिए क्यों उपयोग नहीं:

if (System.getProperty("os.name").contains("Windows"))?

आप एक सी यह (मानव) करने के लिए ++ कार्यक्रम भाषा स्वतंत्र रूप से IVdsDisk::GetProperties का उपयोग कर लिख सकते हैं, और उसके बाद जावा में एक native समारोह के रूप में आयात (और वीएम बता केवल native विधि यदि आप Windows चला रहे चलाने का प्रयास करने के लिए । अगर VDS_DISK_PROP.dwMediaType एक FILE_DEVICE_NETWORK या एक FILE_DEVICE_NETWORK_FILE_SYSTEM है देखने के लिए

MSDN link to get you started

चेक आप सभी समर्थित यहाँ प्रकार देख सकते हैं:। winioctrl.h

यह संभव है कि जावा में मूल्य पहुंच योग्य हो, लेकिन जावा में आमतौर पर प्लेटफ़ॉर्म विशिष्ट सामग्री नहीं होती है इसलिए मुझे शक है।

+0

@ durron597 .. मैं ऊपर वर्णित कोड स्निपेट का उपयोग कर ओएस को अलग कर सकता हूं .. लेकिन इस परिदृश्य को सोचें, जब मैंने अंग्रेजी के अलावा अलग-अलग भाषा में विंडोज ओएस इंस्टॉल किया है तो मै मैप किए गए ड्राइव को अलग करने के लिए "विवरण टाइप करें" का उपयोग नहीं कर सकता और स्थानीय ड्राइव। अगर मैं उन्हें "टाइप विवरण" के माध्यम से अलग करना चाहता हूं तो मुझे स्थानीय ड्राइव से मैप ड्राइव की पहचान करने से पहले ओएस भाषा की जांच करनी होगी। यह विंडोज ओएस में पाए जाने वाली कई भाषाओं की सशर्त जांच की संख्या का कारण बन सकता है। –

+0

@ विग्नेशकुमारथकुमार: मैंने पोस्ट अपडेट किया है, जो आपकी मदद कर सकता है! – durron597