2010-06-23 4 views
6

Ce code Java répertorie les fichiers dans un répertoire sur un lecteur partagé Windows. Cela fonctionnera-t-il correctement sur un système Unix?Cela fonctionnera-t-il sous Unix?

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

Avec des jetons de séparation de fichiers mixtes comme ça? Je serais extrêmement surpris de le voir fonctionner. –

+0

Vous pouvez faire référence à cette question --- http://stackoverflow.com/questions/3100625/how-can-i-read-from-a-windows-shared-drive-in-a-platform-independent-way -using-ja – Bill

+2

Pourquoi ne l'essayez-vous pas? – Anders

Répondre

8

Réponse courte: Non

Réponse longue: Avez-vous installé samba? Même alors, vous devez monter le partage. Donc ça ne marchera probablement pas.

EDIT

Java délègue l'appel au système d'exploitation sous-jacent par la suite. Comme Unix ne sait pas ce que signifie le chemin \\SERVERNAME, Java ne sait pas non plus ce que cela signifie. Ce que vous devez faire, pour que cela fonctionne, est de monter le disque explicitement en utilisant Samba. Votre autre option, si vous utilisez Ubuntu, est regarder sous .gvfs dans votre répertoire home. Ubuntu crée un support pour vos partages Samba, auquel vous devriez pouvoir accéder en utilisant Java. Si vous ne voulez pas compter sur des outils externes, essayez JCIFS pour une solution Java pure.

1

Non, car il s'agit d'un chemin UNC, qui est un Windows.

Essayez-vous d'accéder à un partage Windows à partir d'unix? Alors jetez un oeil à jcifs.

2

Sur mon système (Debian Sid avec Gnome 2.30 Desktop) Je dois sélectionner "smb: /// server/Shared/..." pour obtenir le même comportement. Je pense que GVFS (Gnome Virtual File System) utilisant les pilotes smbfs gère la vraie connexion en arrière-plan ...

3

Non ... Laissez simplement l'utilisateur sélectionner le bon chemin et utilisez une boîte de dialogue de sélection de fichier dépendant du système d'exploitation .

1

La question de compteur que j'obtiens en voyant ceci est: "Pourquoi voudriez-vous coder en dur un chemin dans votre application?"

Même si c'était juste pour l'exemple et que vous avez l'intention de charger le chemin à partir d'un fichier de propriétés ou autre, je pense toujours que vous êtes sur la mauvaise voie ici.

Tout d'abord, vous voulez éviter les chemins absolus comme la peste. Les chemins relatifs sont en quelque sorte ok. Vous pouvez utiliser des caractères slash ('/') dans les chemins codés en dur, cela fonctionnera sur Windows et Linux/Mac. Fondamentalement toutes les plates-formes. Deuxièmement, pourquoi utiliser les chemins du tout? C'est l'âge d'Internet. Utilisez les URL! file: URL's accomplira la même chose que les chemins de fichier, mais en utilisant des URL, votre application acceptera des ressources provenant d'autres sources telles que des sites Web et FTP. En troisième lieu, évitez la classe File. Si vous inventez un bon moyen de le faire, vous êtes complètement hors de la menuiserie. Utilisez des URL avec getResource et getResourceAsStream et votre application fonctionnera indépendamment de la plate-forme et à travers les frontières du réseau sur Internet.