2010-03-20 14 views
6

Ich habe tatsächlich eine Windows/Java-Frage. Ich habe ein Plug-in-Gerät, auf das ich über Java zugreifen möchte. Normalerweise können Sie auf z. USB-Stick über den Laufwerksbuchstaben ... aber dieses Tablet wird von Windows als "Portable Device" angezeigt ... was bedeutet, dass der Pfad etwas wie "Computer \ Archos 5S" ist und es keinen Laufwerksbuchstaben gibt.Pfad für tragbare Geräte unter Windows

Ich möchte auf diesem Gerät über Java auf eine Datei zuzugreifen, aber ich bin nicht in der Lage den richtigen Weg, um es herauszufinden. Es gibt eine ähnliche Frage, aber ohne eine produktive Antwort. Oder gibt es eine andere Möglichkeit, über Java auf dieses Gerät zuzugreifen?


Eigentlich habe ich dieses Problem nicht gelöst ... Ich bin nach wie vor nicht in der Lage, eine solche Vorrichtung über Java zuzugreifen.

Im Moment versuche ich auf einen Windows-ShellFolder in Java zuzugreifen. A Shellfolder wie: "Shell ::: {35786D3C-B075-49b9-88DD-029876E11C01}"

Ist dies möglich mit Java? Kürzlich habe ich die sun.awt Klasse "ShellFolder" entdeckt ... ist das die gewünschte Funktion?

Dank für Ihre Hilfe Ripei

+0

* Ich habe mein Gerät an meinen PC im "MSC" -Modus angeschlossen, aber ich sehe es nicht auf meinem Computer: * Dieser Modus - MSC (Mass Storage Class) - ist nur für Linux-Computer, die eine Steckdose erkennen -in ARCHOS Internet Tablet als externe Festplatte. Für fortgeschrittene Windows-Benutzer ist es möglich, Treiber (auf eigene Gefahr - NICHT vom ARCHOS-Support-Team unterstützt) aus dem Internet zu beziehen, mit denen Sie Partitionen vom Typ Ext3 als externe Festplatte auf Ihrem Windows-Computer bereitstellen können. http://wiki.archosfans.com/index.php?title=Archos_FAQ – ecle

+0

Mehr ... * Was machen die Optionen MSC und MTP im USB Connection Modus für mich? * Dies sind die Protokolle für die Verbindung ein Computer. MSC (Mass Storage Class) ist die gebräuchlichste USB-Verbindungsmethode. MTP (Media Transport Protocol) ist ein intelligentes Transportsystem für reguläre Dateien und Windows Media Player-Dateien. Wenn Sie Windows verwenden, sollten Sie eine Verbindung im MTP-Modus herstellen.Wenn Sie Linux verwenden, sollten Sie sich im MSC-Modus verbinden. – ecle

Antwort

2

Wie * nix-Systeme, alle Geräte (einschließlich Laufwerke) haben Pfade, die Teil einer gemeinsamen Wurzel sind, ist dies in der Regel von den Benutzern verborgen, weil sie die Laufwerksbuchstaben verwenden, die Aliase übersetzt "\Device\HarddiskVolume1" und indem "\\.\HarddiskVolume1" zu Create zugegriffen werden kann: auf diese grundlegenden Pfade, aber Sie können auch durch das Vorsetzen den Pfad mit "\\.\"

zum Beispiel auf meiner Maschine D volle Gerätepfade verwenden.

So ist der Pfad zu Ihrem Gerät ist wahrscheinlich "\\.\Archos 5s".

+0

danke ... das scheint der richtige Weg zu sein, obwohl mein Problem bis jetzt nicht gelöst ist. Ich kann nicht über den "\\. \ - Paramter" auf irgendein Laufwerk oder den "Archos 5S" zugreifen. Aber ich fand diesen Link: http://docs.plt-scheme.org/reference/windowspaths.html Dann habe ich versucht, über "\\? \ C:" auf ein Laufwerk zuzugreifen, und das funktioniert ... aber es funktioniert nicht für "\\? \ Archos 5S". haben Sie eine Idee warum? danke im Voraus reifei – Ripei

+0

Versuchen Sie es mit 'GetLogicalDriveStrings' und' QueryDosDevice' vielleicht hat Ihr Gerät bereits einen Alias, auch wenn es kein Laufwerksbuchstabe ist –

+0

Dieses einfache C-Programm zeigt ein Beispiel für die Aufzählung aller Geräte. http://pastebin.com/Y3pGu5hS –

0

Sie können immer herunterladen und die Windows Mobile-Entwickler Powertoys installieren (http://www.microsoft.com/download/en/details.aspx?id=10601) und kopieren Sie aus und in das Gerät über die Befehlszeile Dienstprogramm cecopy, die Sie aus jeder Programmiersprache ausführen können. Es gibt noch andere Optionen auch, aber es ist sehr gezielt auf .Net

4

Die Lösung oben beschriebene Problem mit JMTP Bibliothek auf https://code.google.com/p/jmtp/

Hier ist mein Code

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(); 

    } 
} 

Vergessen Sie nicht jmtp.dll hinzufügen Dateien (die mit Jmtp-Download kommt) als native Bibliothek. Weitere Informationen finden Sie in meiner Antwort auf Including Native Library in Netbeans.