Нечувствительный к регистру File.equals в чувствительной к регистру файловой системе

фильтр Цветка : Битовый массив м биты, первоначально весь набор к 0.

Для добавления объекта Вы выполняете его до К хеш-функции, которые дадут Вам К индексы в массиве, который Вы затем устанавливаете на 1.

, Чтобы проверить, находится ли объект в наборе, вычислите К индексы и проверка, если они все установлены на 1.

, Конечно, это дает некоторую вероятность ложных положительных сторон (согласно Википедии, которая это о 0.61^ (m/n), где n является количеством вставленных объектов). Ложные отрицательные стороны не возможны.

Удаление объекта невозможно, но можно реализовать фильтр цветка подсчета , представленный массивом ints и инкремента/декремента.

14
задан jwaddell 19 August 2009 в 05:00
поделиться

2 ответа

Получите список файлов из каталога ( File.list () ) и сравните имена, используя equalsIgnoreCase () .

14
ответ дан 1 December 2019 в 12:13
поделиться

Если расхождения случайны, то для меня решение Шими, включающее рекурсивную проверку сегмента пути, является лучшим решением. На первый взгляд это звучит уродливо, но вы можете спрятать волшебство в отдельном классе и реализовать простой API, возвращающий дескриптор файла для данного имени файла, так что вы просто увидите что-то вроде Translator.translate (file) call.

Может быть, расхождения статичны, предсказуемы. Тогда я бы предпочел словарь, который можно использовать для перевода заданного имени файла в имена файлов Windows / Linux. Это имеет большое преимущество перед другим методом: меньше риск получить неправильный дескриптор файла.

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

1
ответ дан 1 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: