Нечувствительный к регистру доступ к каталогу в Java в Unix

Я работаю над Unix, который использует имена файлов с учетом регистра, и мне нужен способ доступа к ним без учета регистра.

В частности, время от времени программа должна попасть в каталог /images в папке проекта. Но поскольку этот каталог создается пользователем вручную, его иногда можно назвать "Изображения", "ИЗОБРАЖЕНИЯ", "iMaGes...".

Учитывая, что в любой папке проекта гарантированно будет только один каталог изображений, как я могу получить к нему прямой доступ, не получая весь список каталогов и не просматривая его?

4 ответа

Решение

Нет другого способа, кроме как прочитать полный список имен каталогов и проверить всех и каждого, соответствует ли он вашему шаблону.

Вы можете скрыть это с помощью FilenameFilter который фильтрует все имена папок, которые не соответствуют вашему шаблону (например, любую папку, чье имя в нижнем регистре равно images). Это может быть лучшим подходом, потому что он вернет всех кандидатов (iaw: ./Images, ./imaGes, ./IMAGES если у вас есть творческие пользователи, которые размещают более одной папки с изображениями;))

В Java 7 есть нечто, называемое PathMatcher, которое позволяет использовать регулярные выражения для поиска файла.

Не существует решения, которое бы не включало бы циклический просмотр ни списка записей в каталоге, ни списка возможных перестановок строчных и прописных букв.

Unix чувствителен к регистру и просит /image когда только /Image существует не даст вам положительного ответа.

Единственное исключение - когда используемая файловая система не чувствительна к регистру (например, варианты FAT не чувствительны к регистру), но, как правило, применима только к внешним носителям.

Если это папка, созданная пользователем, предоставьте им интерфейс выбора файлов, чтобы выбрать папку. Либо так, либо, когда проект создан, создайте папку с изображениями так, чтобы это было предсказуемо позже.

Другие вопросы по тегам