2010-06-23 13 views
6

Ten kod Java wyświetla listę plików w katalogu na dysku udostępnionym systemu Windows. Czy działa poprawnie w systemie Unix?Czy to działa na systemie Unix?

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

Z mieszanymi tokenami separatora plików? Byłbym bardzo zaskoczony, widząc, jak to działa. –

+0

Możesz odwołać się do tego pytania --- http://stackoverflow.com/questions/3100625/how-can-i-read-from-a-windows-shared-drive-in-a-platform-independent-way -using-ja – Bill

+2

Dlaczego nie spróbujesz? – Anders

Odpowiedz

8

Krótka odpowiedź: Nie

Długa odpowiedź: Czy masz zainstalowany samba? Nawet wtedy musisz zamontować udział. Prawdopodobnie to nie zadziała.

EDIT

Java delegaci Wezwanie do bazowego OS ostatecznie. Ponieważ Unix nie wie, co oznacza ścieżka \\SERVERNAME, Java nie wie, co to znaczy. Co musisz zrobić, aby to działało, zamontuj dysk jawnie za pomocą Samby. Inną opcją, jeśli korzystasz z systemu Ubuntu, jest podkatalog .gvfs w katalogu home. Ubuntu tworzy tam mount dla udziałów Samby, do których powinieneś mieć dostęp za pomocą Java. Jeśli nie chcesz polegać na zewnętrznych narzędziach, spróbuj JCIFS dla rozwiązania czysto Java.

1

Nie, ponieważ jest to ścieżka UNC, która jest windowsyzmem.

Czy próbujesz uzyskać dostęp do udziału Windows z systemu Unix? Następnie spójrz na jcifs.

2

W moim systemie (Debian Sid z Gnome 2.30 Desktop) muszę wybrać "smb: /// server/Shared/...", aby osiągnąć to samo zachowanie. Myślę, że GVFS (Gnome Virtual File System) używający sterowników smbfs obsługuje prawdziwe połączenie w tle ...

3

Nie ... Po prostu pozwól użytkownikowi wybrać właściwą ścieżkę i użyj okna dialogowego wyboru pliku zależnego od systemu operacyjnego .

1

Pytanie licznika, które pojawia się, gdy widzę to: "Dlaczego chcesz utrudnić sobie ścieżkę w swojej aplikacji?"

Nawet jeśli był to tylko przykład i zamierzasz załadować ścieżkę z pliku właściwości lub cokolwiek, nadal myślę, że jesteś na niewłaściwym torze tutaj.

Przede wszystkim należy unikać bezwzględnych ścieżek, takich jak dżuma. Względne ścieżki są w porządku. Możesz używać znaków slash ("/") w ścieżkach na stałe, będzie działać zarówno w systemie Windows, jak i Linux/Mac. Zasadniczo wszystkie platformy.

Po drugie, po co używać ścieżek? To jest epoka internetu. Użyj adresów URL! plik: adresy URL wykonają to samo, co ścieżki plików, ale korzystanie z adresów URL spowoduje, że Twoja aplikacja będzie akceptować zasoby z innych źródeł, takich jak strony internetowe i FTP.

Po trzecie, należy unikać klasy File. Jeśli wymyślisz dobry sposób, aby to zrobić, jesteś całkowicie poza drzewem. Używaj adresów URL razem z getResource i getResourceAsStream, a Twoja aplikacja będzie działać niezależnie od platformy i przez granice sieci przez Internet.

Powiązane problemy