Джава:Что представляет собой «обычный» файл в контексте File.isFile()?

StackOverflow https://stackoverflow.com//questions/25039156

Вопрос

Я столкнулся с ситуацией, когда file.isFile() возвращает false, что указывает на то, что файл не является «нормальным».Однако я не могу найти определения того, что означает «нормальный».Документы ссылка на оракул состояние:

Файл является нормальным, если он не является каталогом и, кроме того, удовлетворяет другим системно-зависимым критериям.

Файл принадлежит _www:staff и имеет разрешения -rw-r--r--.Каталог также принадлежит _www:staff и имеет разрешения drwxrw-r--.Процесс, обращающийся к файлу, принадлежит bob:staff.Система MacOS 10.9.Процесс может нормально читать, загружать и отображать файл;единственная проблема заключается в том, что вызов isFile() возвращает false, что означает, что Java считает, что это не обычный файл.

Итак, возвращаясь к более широкому вопросу: при каких условиях этот вызов вернет false, даже если файл существует, путь правильный и файл доступен?

Это было полезно?

Решение

Каталог также принадлежит _www:staff и имеет разрешения drwxrw-r--.Процесс, обращающийся к файлу, принадлежит bob:staff.

У процесса нет разрешения «x» (проверка) в каталоге.Системный вызов, который JVM использует для выполнения File.isFile() требуется это разрешение.Этот системный вызов завершается неудачей, поэтому, поскольку File.isFile() обеспокоен тем, что файл не существует.

Удаление разрешения «x» для каталога при предоставлении разрешения «r» почти всегда является ошибкой.

Другие советы

В системе Unix файл может быть:

  • Обычный файл
  • Каталог
  • Символическая ссылка
  • Именованная труба
  • Разъем
  • Файл устройства
  • Дверь (система Sun Solaris)

«Нормальный» файл здесь относится к обычному файлу.Это тот тип файлов, для которого система не предъявляет никаких требований к внутренней структуре файла.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top