7 Stimmen

Pfad für tragbare Geräte unter Windows

Ich habe eigentlich eine Windows/Java-Frage. Ich habe ein eingestecktes Gerät, auf das ich über Java zugreifen möchte. Normalerweise kann man auf einen z.B. USB-Stick über den Laufwerksbuchstaben zugreifen... aber dieses Tablet wird von Windows als "Tragbares Gerät" angezeigt... was bedeutet, dass der Pfad in etwa "Computer \Archos 5S" und es gibt keinen Laufwerksbuchstaben.

Ich möchte über Java auf eine Datei auf diesem Gerät zugreifen, aber ich kann den korrekten Pfad dazu nicht herausfinden. Es gibt eine ähnliche Frage da draußen, 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 immer noch nicht in der Lage, auf ein solches Gerät über Java zuzugreifen.

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

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

Danke für Ihre Hilfe Ripei

4voto

Umair Aziz Punkte 1518

Die Lösung des obigen Problems mit der 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, die jmtp.dll-Dateien (die mit dem jmtp-Download auftauchen) als native Bibliothek hinzuzufügen. Für weitere Informationen, siehe meine Antwort auf Einbindung der nativen Bibliothek in Netbeans .

2voto

John Knoeller Punkte 32285

Wie bei *nix-Systemen haben alle Geräte (einschließlich der Laufwerke) Pfade, die Teil eines gemeinsamen Roots sind. Dies ist normalerweise vor den Benutzern verborgen, da sie die Laufwerksbuchstaben verwenden, die Aliase für diese grundlegenden Pfade sind, aber Sie können auch vollständige Gerätepfade verwenden, indem Sie dem Pfad das Wort "\\.\"

Auf meinem Rechner wird D: beispielsweise wie folgt übersetzt "\Device\HarddiskVolume1" und kann durch die Übergabe von "\\.\HarddiskVolume1" zu CreateFile.

Der Pfad zu Ihrem Gerät lautet also wahrscheinlich "\\.\Archos 5s" .

0voto

peter Punkte 41076

Sie können jederzeit die Windows Mobile Developer Powertoys (http://www.microsoft.com/download/en/details.aspx?id=10601) herunterladen und installieren und mit dem Kommandozeilenprogramm cecopy, das Sie in jeder Programmiersprache ausführen können, von und auf das Gerät kopieren. Es gibt auch andere Optionen, aber es ist vor allem auf .Net ausgerichtet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X