2010-03-20 20 views
6

In realtà ho una domanda Windows/Java. Ho un dispositivo collegato che voglio accedere tramite Java. Normalmente puoi accedere ad es. USB-Stick tramite la lettera Drive ... ma questo tablet viene visualizzato da Windows come "Dispositivo portatile" ... il che significa che il percorso è simile a "Computer \ Archos 5S" e non è presente alcuna lettera di unità.Percorso dispositivo portatile su Windows

Desidero accedere a un file su questo dispositivo tramite Java, ma non sono in grado di individuare il percorso corretto. C'è una domanda simile là fuori, ma senza una risposta produttiva. O c'è un altro modo per accedere a questo dispositivo tramite Java?


In realtà non ho risolto questo problema ... Non riesco ancora ad accedere a tale dispositivo tramite java.

Al momento sto tentando di accedere a Windows ShellFolder in Java. Una shellfolder come: "Shell ::: {35786D3C-B075-49b9-88DD-029876E11C01}"

Ciò è possibile con Java? Recentemente ho scoperto la classe sun.awt "ShellFolder" ... questa è la funzione desiderata?

grazie per il vostro aiuto Ripei

+0

* Ho collegato la mia unità al mio PC in modalità "MSC", ma non riesco a vederlo sul mio computer: * Questa modalità - MSC (Mass Storage Class) - è solo per computer Linux che riconoscono un plug-in -in ARCHOS Internet Tablet come disco rigido esterno. Per utenti Windows avanzati, è possibile ottenere driver (utilizzare a proprio rischio - NON supportato dal team di supporto tecnico di ARCHOS) da Internet che consentirà di montare le partizioni di tipo Ext3 come disco rigido esterno sul computer Windows. http://wiki.archosfans.com/index.php?title=Archos_FAQ – ecle

+0

Altro ... * Che cosa fanno per me le opzioni MSC e MTP in modalità Connessione USB? * Questi sono i protocolli per come si connette a un computer. MSC (Mass Storage Class) è il metodo di connessione USB più comune. MTP (Media Transport Protocol) è un sistema di trasporto intelligente per file regolari e file Windows Media Player. Se si utilizza Windows, è necessario connettersi in modalità MTP.Se stai usando Linux, dovresti connetterti in modalità MSC. – ecle

risposta

2

come sistemi * nix, tutte le periferiche (comprese le unità) hanno percorsi che fanno parte di una radice comune, questo è normalmente nascosta da parte degli utenti perché usano le lettere di unità che sono alias a questi percorsi fondamentali, ma è anche possibile utilizzare i percorsi completi dei dispositivi anteponendo il percorso con "\\.\"

per esempio, sulla mia macchina D: si traduce come "\Device\HarddiskVolume1" e si può accedere passando "\\.\HarddiskVolume1" a CreateFile.

Quindi il percorso sul dispositivo è probabilmente "\\.\Archos 5s".

+0

grazie ... questo sembra essere il modo giusto anche se il mio problema non è stato risolto fino ad ora. Non riesco ad accedere ad alcuna unità o "Archos 5S" tramite il "\\. \ - Parametro. Ma ho trovato questo collegamento: http://docs.plt-scheme.org/reference/windowspaths.html Poi ho provato ad accedere a un drive tramite "\\? \ C:" e questo funziona ... ma non funziona con "\\? \ Archos 5S". hai qualche idea del perché? grazie in anticipo ripei – Ripei

+0

Provare a utilizzare 'GetLogicalDriveStrings' e' QueryDosDevice' Forse il dispositivo ha già un alias anche se non è una lettera di unità. –

+0

vedere questo semplice programma C per un esempio di enumerazione di tutti i dispositivi. /pastebin.com/Y3pGu5hS –

0

è sempre possibile scaricare e installare lo sviluppatore mobile Windows Powertoys (http://www.microsoft.com/download/en/details.aspx?id=10601) e copiare da e sul dispositivo utilizzando l'utilità della riga di comando cecopy, che puoi eseguire da qualsiasi linguaggio di programmazione. Ci sono altre opzioni anche lì, ma è più mirati a .Net

4

La soluzione al problema di cui sopra utilizzando la libreria JMTP su https://code.google.com/p/jmtp/

Ecco il mio codice

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

    } 
} 

Non dimenticare aggiungere jmtp.dll file (che esce con il download di jmtp) come libreria nativa. Per maggiori informazioni, vedere la mia risposta allo Including Native Library in Netbeans.

Problemi correlati