2010-03-20 15 views
6

मुझे वास्तव में एक विंडोज/जावा प्रश्न मिला है। मेरे पास एक प्लग-इन डिवाइस है जिसे मैं जावा के माध्यम से एक्सेस करना चाहता हूं। आम तौर पर आप एक उदाहरण का उपयोग कर सकते हैं ड्राइव अक्षर के माध्यम से यूएसबी-स्टिक ... लेकिन यह टैबलेट विंडोज द्वारा "पोर्टेबल डिवाइस" के रूप में प्रदर्शित होता है ... जिसका अर्थ है कि पथ "कंप्यूटर \ आर्कोस 5 एस" जैसा कुछ है और कोई ड्राइव अक्षर नहीं है।विंडोज़ पर पोर्टेबल डिवाइस पथ

मैं जावा के माध्यम से इस डिवाइस पर एक फ़ाइल का उपयोग करना चाहता हूं, लेकिन मैं इसके लिए सही पथ नहीं समझ पा रहा हूं। वहां एक समान सवाल है, लेकिन उत्पादक उत्तर के बिना। या जावा के माध्यम से इस डिवाइस तक पहुंचने का कोई और तरीका है?


वास्तव में मैं इस समस्या का समाधान नहीं है ... मैं अभी भी जावा के माध्यम से इस तरह के एक उपकरण उपयोग करने में सक्षम नहीं हूँ।

फिलहाल मैं जावा में एक विंडो शैलफ़ोल्डर तक पहुंचने का प्रयास कर रहा हूं। ए शैल्फोल्डर जैसे: "शैल ::: {35786D3C-B075-49b9-88DD-029876E11C01}"

क्या यह जावा के साथ संभव है? हाल ही में मैंने sun.awt वर्ग "शैलफोल्डर" को उजागर किया ... क्या यह वांछित विशेषता है? आपकी मदद के लिए

धन्यवाद Ripei

+0

* मैंने अपनी इकाई को "एमएससी" मोड में अपने पीसी से जोड़ा है, लेकिन मैं इसे अपने कंप्यूटर पर नहीं देख सकता: * यह मोड - एमएससी (मास स्टोरेज क्लास) - केवल लिनक्स कंप्यूटर के लिए है जो एक प्लग को पहचान लेगा बाहरी हार्ड ड्राइव के रूप में ARCHOS इंटरनेट टैबलेट। उन्नत विंडोज उपयोगकर्ताओं के लिए, इंटरनेट से ड्राइवरों को प्राप्त करना संभव है (अपने जोखिम पर उपयोग करें - ARCHOS तकनीकी सहायता टीम द्वारा समर्थित नहीं) जो आपको अपने विंडोज कंप्यूटर पर बाहरी हार्ड ड्राइव के रूप में Ext3 प्रकार विभाजन को माउंट करने की अनुमति देगा। http://wiki.archosfans.com/index.php?title=Archos_FAQ – ecle

+0

और ... * यूएसबी कनेक्शन मोड में एमएससी और एमटीपी विकल्प मेरे लिए क्या करते हैं? * ये प्रोटोकॉल हैं कि यह कैसे कनेक्ट होता है एक कंप्यूटर। एमएससी (मास स्टोरेज क्लास) सबसे आम यूएसबी कनेक्शन विधि है। एमटीपी (मीडिया ट्रांसपोर्ट प्रोटोकॉल) नियमित फाइलों और विंडोज मीडिया प्लेयर फ़ाइलों के लिए एक बुद्धिमान परिवहन प्रणाली है। यदि आप विंडोज का उपयोग कर रहे हैं, तो आपको एमटीपी मोड में कनेक्ट करना चाहिए।यदि आप लिनक्स का उपयोग कर रहे हैं, तो आपको एमएससी मोड में कनेक्ट करना चाहिए। – ecle

उत्तर

2
* nix प्रणाली, (ड्राइव सहित) सभी उपकरणों रास्तों क्योंकि वे ड्राइव पत्र जो उपनाम का उपयोग है कि एक आम जड़ का हिस्सा है, यह सामान्य रूप से उपयोगकर्ताओं से छिपा हुआ है रहे हैं जैसा

इन मौलिक पथ, लेकिन आप भी पूर्ण डिवाइस पथ "\\.\"

उदाहरण के लिए, मेरी मशीन डी पर साथ पथ लगाकर से उपयोग कर सकते हैं: "\Device\HarddiskVolume1" के रूप में तब्दील हो और CreateFile करने "\\.\HarddiskVolume1" पास करके पहुँचा जा सकता है।

तो आपके डिवाइस का पथ शायद "\\.\Archos 5s" है।

+0

धन्यवाद ... यह सही तरीका प्रतीत होता है हालांकि मेरी समस्या अभी तक हल नहीं हुई है। मैं "\\ के माध्यम से किसी भी ड्राइव या" Archos 5 एस "उपयोग करने में सक्षम नहीं कर रहा हूँ \ - Paramter लेकिन मैं इस लिंक मिल गया:।। Http://docs.plt-scheme.org/reference/windowspaths.html फिर मैंने "\\? \ C:" के माध्यम से ड्राइव तक पहुंचने का प्रयास किया और यह काम करता है ... लेकिन यह "\\? \ Archos 5S" के लिए काम नहीं करता है। क्या आपको कोई विचार है क्यों? धन्यवाद अग्रिम में ripei – Ripei

+0

'GetLogicalDriveStrings' और' QueryDosDevice' का उपयोग करने का प्रयास करें, हो सकता है कि आपके डिवाइस में पहले से ही उपनाम हो, भले ही यह ड्राइव अक्षर न हो। –

+0

सभी सरल उपकरणों को गिनने के उदाहरण के लिए यह सरल सी प्रोग्राम देखें। http://pastebin.com/Y3pGu5hS –

0

आप हमेशा विंडोज मोबाइल डेवलपर पावरटोइस (http://www.microsoft.com/download/en/details.aspx?id=10601) को डाउनलोड और इंस्टॉल कर सकते हैं और कमांड लाइन उपयोगिता का उपयोग कर डिवाइस से कॉपी कर सकते हैं सेकोपी, जिसे आप किसी भी प्रोग्रामिंग भाषा से चला सकते हैं। अन्य विकल्प भी वहाँ रहे हैं, लेकिन यह सबसे https://code.google.com/p/jmtp/

यहाँ पर नेट

4

JMTP पुस्तकालय का उपयोग करके उपरोक्त समस्या के समाधान पर लक्षित है मेरी कोड है

package jmtp; 

import be.derycke.pieter.com.COMException; 
import be.derycke.pieter.com.Guid; 
import java.io.*; 
import java.math.BigInteger; 
import jmtp.PortableDevice; 
import jmtp.*; 

public class Jmtp { 

    public static void main(String[] args) { 
     PortableDeviceManager manager = new PortableDeviceManager(); 
     PortableDevice device = manager.getDevices()[0]; 
     // Connect to my mp3-player 
     device.open(); 

     System.out.println(device.getModel()); 

     System.out.println("---------------"); 

     // Iterate over deviceObjects 
     for (PortableDeviceObject object : device.getRootObjects()) { 
      // If the object is a storage object 
      if (object instanceof PortableDeviceStorageObject) { 
       PortableDeviceStorageObject storage = (PortableDeviceStorageObject) object; 

       for (PortableDeviceObject o2 : storage.getChildObjects()) { 
//      
//      BigInteger bigInteger1 = new BigInteger("123456789"); 
//      File file = new File("c:/JavaAppletSigningGuide.pdf"); 
//      try { 
//       storage.addAudioObject(file, "jj", "jj", bigInteger1); 
//      } catch (Exception e) { 
//       //System.out.println("Exception e = " + e); 
//      } 
//      

        System.out.println(o2.getOriginalFileName()); 
       } 
      } 
     } 

     manager.getDevices()[0].close(); 

    } 
} 

भूल jmtp.dll न जोड़ें एक मूल पुस्तकालय के रूप में फ़ाइलें (जो jmtp डाउनलोड के साथ आता है)। अधिक जानकारी के लिए, मेरा उत्तर Including Native Library in Netbeans पर देखें।