2012-07-22 16 views
5

Sto utilizzando JCIFS nel mio nuovo progetto Android. In qualche modo ho deciso di utilizzare la classe URL per generalizzare il percorso del file (quindi posso aggiungere più protocollo in seguito). Quello che ho fatto è il seguenteUtilizzo del protocollo SMB nell'URL durante l'utilizzo della libreria JCIFS su Android

URL url = new URL("smb://192.168.1.1/filepath"); 

E quindi viene generata l'eccezione java.net.MalformedURLException.

Exception in thread "main" java.net.MalformedURLException: unknown protocol: smb 
    at java.net.URL.<init>(URL.java:184) 
    at java.net.URL.<init>(URL.java:127) 

Consulenza JCIFS FAQ rivela che devo registrare il protocollo prima di utilizzare la classe. Tuttavia non so davvero come farlo in Android. Penso che la biblioteca lo faccia già, ma non su Android.

Quindi cosa dovrei fare?

+0

Dove hai inserito il file Jar jcifs? Dovrebbe essere nel percorso di classe appropriato per il gestore da caricare. – medopal

+0

Inserisco il file jar nella directory/libs del progetto, che penso non sia nel classpath. E penso che Android gestisca classpath in modo diverso rispetto alla normale applicazione Java. –

risposta

0

Non utilizzare un oggetto URL. Passare l'URL direttamente nel costruttore SmbFile. Ad esempio:

SmbFile file = new SmbFile("smb://192.168.1.1/filepath"); 

Quindi puoi fare quasi tutto quello che puoi fare con un file normale.

+0

Il motivo per cui utilizzo l'oggetto URL è che voglio supportare anche altri protocolli (e file system locale). L'uso dell'URL può renderlo più astratto nel protocollo. Inoltre voglio usare l'oggetto Serilizable per passare tra le Attività, che non è SmbFile. –

+0

Sembra buono, sono contento che tu l'abbia capito! – 11101101b

5

Ho appena visto l'utilizzo nel riferimento JCIFS, nel riferimento SmbFile.

Quando si utilizza la classe java.net.URL con 'smb: //' URL è necessario per chiamare prima statico jcifs.Config.registerSmbURLHandler(); metodo. È necessario per registrare il gestore del protocollo SMB.

Così aggiungo questa chiamata e funziona correttamente.

+0

Javadoc: [http://stderr.org/doc/libjcifs-java-doc/api/jcifs/Config.html#registerSmbURLHandler()](http://stderr.org/doc/libjcifs-java-doc/api /jcifs/Config.html#registerSmbURLHandler()) –

+0

Il collegamento precedente non è disponibile, utilizzare invece https://jcifs.samba.org/src/docs/api/jcifs/Config.html#registerSmbURLHandler%28%29 – jneira