Fichier Java.isDirectory() renvoie la valeur False pour un Répertoire sous Linux
Veuillez voir l'extrait de code:
File[] additionalFiles = new File(FILE_PATH).listFiles();
boolean isDirectory = file.isDirectory();
J'ai vérifié que le chemin est correct, et quand je lance le code sur Windows, la valeur de isDirectory est vrai (comme il faut). Des suggestions quant à pourquoi cela se produit sur Linux (RedHat Enterprise Linux)?
- Est le répertoire régulière d'un répertoire, ou un lien symbolique? Quelle version de Java? Quelle est la version de RH? Le répertoire contient aucune inhabituelle (non-anglais) des caractères dans le nom?
- Quelle est la valeur de
FILE_PATH
? Est-il, par hasard, contiennent Windows fichier de style séparateurs ('\')? - Je crois qu'il utilise un lien symbolique, le répertoire est sur un serveur partagé, quel impact? La version Java se 6 update 17. Le HR version Enterprise RedHat 5. Le répertoire contient toutes les lettres minuscules, pas de caractères spéciaux, et le fichier de séparateurs sont corrects (j'ai imprimé le répertoire lors de l'exécution du programme, puis copié et collé dans la ligne de commande après "cd" et avec succès et cd pour le répertoire).
Vous devez vous connecter pour publier un commentaire.
Liens symboliques ne lis pas que des répertoires, si je me souviens bien. Le droit chemin est:
(NOTE: pas testé, je n'ai pas de linux pour tester sur facilement).
J'ai rencontré ce problème une fois. Mon cas est tellement drôle, je lisais le chemin d'accès à partir d'un fichier de propriétés, et que le chemin d'accès contenait un caractère de tabulation à la fin de la chaîne. C'est la raison pourquoi le chemin d'accès n'a pas été reconnu comme un répertoire
Checkout ce lien
http://bugs.sun.com/view_bug.do;jsessionid=56e03cb783aaf9725daf5ec8d8?bug_id=6539692
Vous pouvez avoir ce problème.
Sinon je dirais un problème avec les autorisations de fichier (même si ce peut rejeter l'exception de sécurité et je suis en supposant que votre code n'est pas de l'emballer et de le retourner false) ou peut-être un sym question du lien que je ne sais pas beaucoup sur.