2011-12-12 11 views
6

Come elencare tutte le cartelle condivise disponibili in uno specifico indirizzo IP?condivisioni IP

codice Mock:

IP ip = new IP("10.0.0.9"); 

for(File share : ip.getSharedFolders){ 
    System.out.println(share.getName()); 
} 

C'è un modo in cui questo può essere realizzato?

Voglio creare qualcosa di simile a Windows Network Explorer e ho bisogno di ottenere tutte le cartelle condivise con un IP specifico in modo da poter generare un albero.

Network explorer

con le cartelle condivise primo livello posso easely ottenere i livelli più bassi come questo

for(File f : new File("//10.0.0.9/d").listFiles()){ 
        System.out.println(f.getName()); 
+0

"cartelle condivise" -? Come condivisi –

+1

nuovo file ("// 10.0.0.9/d/movies") Samba condivide, posizione di rete – ex0b1t

risposta

11

È possibile ottenere l'elenco delle condivisioni utilizzando lo The Java CIFS Client Library e in particolare il metodo SmbFile.list. Ecco un piccolo esempio di come utilizzare questa API:

SmbFile server = new SmbFile("smb://server/"); 
String[] shares = server.list(); 
+0

thx per la risposta veloce – ex0b1t

+0

Questo è davvero interessante! +1 Grazie – MaVRoSCy

2

Java fuori dalla scatola non supporta ciò che si sta cercando di fare. Per utilizzare questa funzione è necessario utilizzare librerie come JCIFS.

Un modo semplice/cludgy fuori, però potrebbe essere quella di fare in modo che si dispone di un mapping di unità (se le finestre o NFS/SMB supporto per altri sistemi operativi) per la posizione e poi trattarlo come un file locale - usando java.io API.

0

Se i file sono accessibili attraverso l'indirizzo IP del server (rete saggio e il permesso saggio) poi certo tutti si possono elencare ricorsivamente nel modo seguente:

  1. Ottieni il nome della cartella remota. Esempio "//10.0.0.9/folder"
  2. Scorrere la cartella proprio come si farebbe per elencare i file in una directory locale (si veda questo link per saperne di più sulla vendita di file locali in una directory locale