Фантомные папки из ада (установка старой Vista), вызывающая проблемы с Java String.equals () - PullRequest
3 голосов
/ 24 июня 2010

Я пишу программу, которая ищет каталоги на компьютере.На моем собственном компьютере установлен диск, который ранее загружал Windows Vista.

(Тем не менее, есть диски, которые не отображаются даже при «показе скрытых папок». Я вижу папки с запущенным cmd, но это не решает мою проблему.)

Не знаюМне не безразличны папки, но мне нужно сравнить строки с их именами.Однако string.equals () и string.compareTo () не работают с этими фантомными папками, когда я получаю их имя с помощью File directory.getName ().

Я распечатал имена, проверил на наличие пробелов,использованная отделка и т. д., но скрытая папка с именем «Boot» по-прежнему не будет совпадать со строкой с таким же значением.

TLDR: фантомные каталоги возвращают несопоставимую / сопоставимую строку с File directory.getName ().

Помимо решения проблемы, мне просто любопытно узнать, что происходит.

Ответы [ 2 ]

2 голосов
/ 24 июня 2010

Возможно, вы получаете скрытые символы в имени. Проверьте длину строки в папке Boot, чтобы увидеть, если это четыре. Преобразуйте строку в массив символов и проверьте каждую ячейку в отладчике.

0 голосов
/ 24 июня 2010

Использовать инвариантные сравнения при сравнении имен файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...