2010-06-23 14 views
6

Questo codice Java elenca i file in una directory su un'unità condivisa di Windows. Funzionerà correttamente su un sistema Unix?Funzionerà su Unix?

File directory = new File("\\\\server/Shared/stuff/mystuff"); 
for (File file: directory.listFiles()) { 
    System.out.println(file); 
} 
+0

Con i token di file-separatore simili? Sarei estremamente sorpreso di vederlo funzionare. –

+0

Puoi fare riferimento a questa domanda --- http://stackoverflow.com/questions/3100625/how-can-i-read-from-a-windows-shared-drive-in-a-platform-independent-way -using-ja – Bill

+2

Perché non ci provi? – Anders

risposta

8

Risposta breve: No.

Risposta lunga: hai samba installato? Anche allora è necessario montare la condivisione. Quindi probabilmente non funzionerà.

EDIT

delegati Java la chiamata al sistema operativo sottostante alla fine. Poiché Unix non sa cosa significa il percorso \\SERVERNAME, Java non sa cosa significa. Quello che devi fare, per farlo funzionare è montare l'unità in modo esplicito usando Samba. La tua altra opzione, se stai usando Ubuntu, è sotto .gvfs nella tua directory home. Ubuntu crea un mount per le tue condivisioni Samba, che dovresti essere in grado di accedere usando Java. Se non vuoi fare affidamento su strumenti esterni, prova a JCIFS per una soluzione pure-Java.

1

No, poiché questo è un percorso UNC, che è un windowsism.

Si sta tentando di accedere a una condivisione di Windows da unix? Quindi dai un'occhiata a jcifs.

2

Sul mio sistema (Debian Sid con Gnome 2.30 Desktop) Devo selezionare "smb: /// server/Shared/..." per ottenere lo stesso comportamento. Penso che GVFS (Gnome Virtual File System) che usa i driver smbfs gestisca la vera connessione in background ...

3

No ... Basta che l'utente selezioni il percorso giusto e utilizzi una finestra di selezione dei file dipendente dal SO .

1

La domanda del contatore che ottengo quando si vede questo è: "Perché si desidera codificare un percorso nella propria applicazione?"

Anche se era solo per l'esempio e si intende caricare il percorso da un file di proprietà o altro, continuo a pensare che si sia sulla strada sbagliata qui.

Prima di tutto vorrai evitare percorsi assoluti come la peste. I percorsi relativi sono un po 'ok. È possibile utilizzare i caratteri barra ('/') nei percorsi codificati, funzionerà su Windows e Linux/Mac. Fondamentalmente tutte le piattaforme.

In secondo luogo, perché utilizzare i percorsi? Questa è l'era di Internet. Usa URL! file: gli URL avranno la stessa funzione dei percorsi dei file, ma utilizzando gli URL la tua app accetta risorse da altre fonti come siti Web e FTP.

In terzo luogo, evitare la classe File. Se inventi un buon modo per farlo, sei completamente fuori dalla lavorazione del legno. Utilizza gli URL insieme a getResource e getResourceAsStream e la tua app funzionerà indipendentemente dalla piattaforma e oltre i confini della rete su Internet.