En Java, je suis en train de lister les fichiers et dossiers dans mon répertoire C:\
et boucle à travers les utilisant: File[] files = new File("C:\\").listFiles();
Java trouve un dossier "Documents and Settings" sur Win 7 HP. Je ne vois pas un
Cependant, à ma grande surprise quand je boucle le tableau je trouve que le premier index est C:\Documents and Settings
! Pour commencer, je cours Windows 7 Home Premium et je n'ai même pas mis à jour à partir de Windows XP ou quoi que ce soit, mais peu importe ce que je fais, je ne peux pas voir ce dossier sur mon disque, disputer choisir de voir les dossiers cachés!
En outre, comme vous vous en doutez, lorsque vous commencez à utiliser une méthode récursive pour parcourir chaque dossier du lecteur, il lance un NullPointerException
dès qu'il essaie de lister les fichiers dans ce répertoire.
Est-ce que quelqu'un sait pourquoi c'est, ou même mieux, comment résoudre le problème? Toute idée est apprécié, merci à l'avance
MISE À JOUR: Je suis maintenant très rapidement établi que C:\Documents and Settiings
est un symlink ou « JONCTION », donc savoir par question est: comment puis-je savoir qu'il est un lien symbolique en Java pour que je puisse dire à la boucle for d'en sauter un?
Il est en général une très mauvaise idée de suivre les liens symboliques en traversant les répertoires. Si vous voulez faire cela, vous devez vous assurer de détecter les cycles, sinon vous finirez dans une boucle sans fin.La plupart des outils dans unix (où les liens symboliques sont vus beaucoup plus souvent) par défaut les ignorent .. – Voo
Ah, donc c'est un lien symbolique. C'était en fait une partie de ma question - je ne pouvais pas comprendre pourquoi il apparaissait dans le tableau généré par 'listFiles()' mais je ne pouvais pas le voir dans Windows Explorer. S'il vous plaît voir ma question modifiée. – Andy
L'API du fichier Java original était sévèrement limitée et plutôt déficiente de beaucoup de manières différentes - je ne sais pas comment vous le feriez avec ça. La nouvelle API de fichier Java7 est beaucoup améliorée et vous permet de spécifier des options sur la façon dont les liens symboliques doivent être gérés: [voir ici] (http://docs.oracle.com/javase/tutorial/essential/io/links.html) – Voo