2010-11-07 5 views
0

Les méthodes Java isFile() et isDirectory() ne fonctionnent que si le fichier ou le répertoire existe réellement et s'il n'existe pas?Comment identifier si fichier ou pas un fichier?

Existe-t-il une alternative à ces méthodes?

exemple:

File f=new File(var); 

Maintenant, var est rien généré par le moteur d'exécution, donc je ne sais pas si elle est ou non un fichier et vous pouvez réellement initialiser l'objet sans le fichier ou le chemin existant. Ce que je veux obtenir est: comment puis-je déterminer si le fichier est vraiment un fichier même s'il n'existe pas? Si je détermine s'il y a des extensions, je pourrais être en mesure de le dire, mais sous Linux je pense que certains fichiers n'ont pas d'extensions de fichiers et je dois travailler sur toutes les plateformes.

+3

Votre exemple ne aide pas. Un objet de système de fichiers inexistant n'est ni un fichier ni un répertoire. C'est comme si je disais que je veux savoir quel modèle Porsche j'ai, même si je ne possède pas de Porsche. Les extensions ne sont pas pertinentes. Oui, les fichiers sans extension sont assez courants sous Unix. Ils peuvent aussi exister sur Windows, je crois, bien qu'ils soient moins communs. De même, il est possible d'avoir des répertoires avec des extensions (par exemple: "rc2.d" ou "Safari.app"), il n'y a donc pas de moyen fiable de dire simplement à partir d'un nom s'il s'agit d'un répertoire ou d'un fichier. –

Répondre

8

Si le fichier n'existe pas alors ce n'est ni un fichier normal ni un répertoire ... cela n'a pas vraiment de sens de demander quel type de fichier il est s'il n'existe pas réellement.

Si vous créez le fichier, vous pouvez décider de quel type il s'agit; Si vous ne créez pas le fichier, eh bien, il n'existe pas.

+0

je pense que je vais poster un exemple –

+0

Même avec l'exemple, il n'a toujours pas de sens de demander si l'objet 'File' représente un fichier ou un répertoire ... ce n'est ni l'un ni l'autre. Si vous appelez 'f.createNewFile()', il deviendra un fichier normal; Si vous appelez 'f.mkDir()', il deviendra un répertoire. –

1

Appelez la méthode exists() pour déterminer si le fichier ou le répertoire existe ou appelez getPath() pour obtenir le chemin d'accès de l'objet File (que ce chemin existe ou non).

Mis à jour pour des informations supplémentaires ajoutées à la question.

4

http://download.oracle.com/javase/1.4.2/docs/api/java/io/File.html#isFile%28%29

Retours: vrai si et seulement si le fichier désigné par ce chemin abstrait existe et est un fichier normal; false sinon ...

Par conséquent, la vérification supplémentaire de exists() est inutile.

Saisie finale: Laissez tomber le concept des extensions de fichier. Ce n'est vraiment rien d'autre que le nom de fichier. Il est simplement utilisé comme métadonnées pour d'autres programmes sur un système d'exploitation afin que certains fichiers puissent être associés/ouverts avec certains programmes.

+0

ouais je suis confus dans cette déclaration que je pense qu'il dénote également le nom de fichier du fichier, donc si le chemin + nom de fichier n'existe pas est ce que je comprends dans ce contexte ai-je raison? –

+0

chemin d'accès est chemin + nom de fichier –

0

Vous pouvez vérifier si var est une chaîne valide représentant un chemin valide. Peut-être quelque chose comme si (var! = Null & & var instanceof Chaîne & & ((String) var) .matches ("regex pour le système de fichiers, système sous-jacent à charge")) {// faire quelque chose ici }

puis vous pouvez utiliser la méthode exists() pour vérifier si le fichier est valide.

Questions connexes