Question

J'ai rencontré une situation où file.isFile() renvoie false, ce qui indique que le fichier n'est pas "normal".Cependant, je ne trouve pas de définition de ce que signifie « normal ».Les documents lien vers Oracle État:

Un fichier est normal s'il ne s'agit pas d'un répertoire et s'il satisfait en outre à d'autres critères dépendants du système.

Le fichier appartient à _www:staff et dispose des autorisations -rw-r--r--.Le répertoire appartient également à _www:staff et dispose des autorisations drwxrw-r--.Le processus qui accède au fichier appartient à bob:staff.Le système est MacOS 10.9.Le processus peut très bien lire, charger et afficher le fichier ;le seul problème est que l'appel à isFile() renvoie false, ce qui signifie que Java pense qu'il ne s'agit pas d'un fichier normal.

Donc, pour revenir à la question plus large, dans quelles conditions cet appel retournera-t-il false même si le fichier existe, que le chemin est correct et que le fichier est accessible ?

Était-ce utile?

La solution

Le répertoire appartient également à _www:staff et dispose des autorisations drwxrw-r--.Le processus qui accède au fichier appartient à bob:staff.

Le processus n'a pas l'autorisation "x" (examiner) sur le répertoire.L'appel système que la JVM utilise pour effectuer File.isFile() nécessite cette autorisation.Cet appel système échoue, donc dans la mesure où File.isFile() craint que le fichier n'existe pas.

C'est presque toujours une erreur de supprimer l'autorisation "x" sur un répertoire tout en accordant l'autorisation "r".

Autres conseils

Dans un système Unix, un fichier peut être :

  • Fichier régulier
  • Annuaire
  • Lien symbolique
  • Canal nommé
  • Prise
  • Fichier de périphérique
  • Porte (système Sun Solaris)

Le fichier « Normal » fait ici référence à un fichier normal.C'est le seul type de fichier pour lequel le système n'impose aucune exigence sur la structure interne du fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top