Pregunta

Me he encontrado en una situación donde archivo.isFile() devuelve false, lo que indica que el archivo no es "normal".Sin embargo, no puedo encontrar una definición de lo "normal" significa.El docs enlace a Oracle estado:

Un archivo es normal si no es un directorio y, además, cumple con otro sistema dependiente de criterios.

El archivo es propiedad de _www:staff y tiene permisos -rw-r--r--.El directorio es también propiedad de _www:staff y tiene permisos drwxrw-r--.El proceso que tiene acceso el archivo es propiedad de bob:staff.El sistema es mac Os 10.9.El proceso puede leer y cargar y mostrar el archivo que acaba de multa;el único problema es que la llamada a isFile() devuelve false, lo que significa que Java piensa que no es un archivo normal.

Así, para obtener de vuelta a la gran pregunta, ¿bajo qué condiciones esta llamada devuelve false incluso aunque el archivo no existe, el camino es correcto, y el archivo es accesible?

¿Fue útil?

Solución

El directorio es también propiedad de _www:staff y tiene permisos drwxrw-r--.El proceso que tiene acceso el archivo es propiedad de bob:staff.

El proceso no tiene "x" permiso (examinar) en el directorio.La llamada al sistema que la JVM utiliza para realizar File.isFile() requiere este permiso.Esta llamada al sistema falla, así como la medida como File.isFile() es cuestión de que el archivo no existe.

Es casi siempre un error quitar la "x" de permisos en un directorio, mientras que la concesión de la "r" de permiso.

Otros consejos

En un sistema UNIX, un archivo puede ser A:

  • archivo regular
  • directorio
  • enlace simbólico
  • Tubo nombrado
  • socket
  • archivo de dispositivo
  • Puerta (Sun Sistema Solaris)
El archivo

"Normal" se refiere a un archivo regular aquí.Es el único tipo de archivo donde el sistema no impone ningún requisito en la estructura interna del archivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top