Открытие файла с двоеточиями в имени файла в Java (отображается как косая черта в MacOs Finder)
Эта проблема для Linux/Mac; Я даже не думаю, что файлы могли бы существовать с косой чертой, если бы они были разархивированы на коробку Windows.
Привет, у меня есть требование открыть файлы журнала, которые были выведены популярной системой BRO IDS. Файлы только для чтения, и мне нужно обрабатывать их содержимое без изменения имен файлов.
По некоторым причинам имена файлов Bro имеют следующий формат: "conn.19/00/00-22/00/00.log". (также.gz-версии этого, с косой чертой) Я попытался запустить последний экземпляр Bro на моем Mac с настройками по умолчанию, и он создал файлы журнала с тем же шаблоном прямой косой черты, так что это было сознательное решение, принятое кем-то другим, и я буду надо обойти.
При загрузке файла в качестве модульного теста Java, либо через
File("conn.19/00/00-22/00/00.log")
или по URL
getClass().getClassLoader().getResource("conn.19/00/00-22/00/00.log")
Я получаю ожидаемую проблему интерпретации прямой косой черты как несуществующего каталога.
** Я нашел кучу других опровергнутых вопросов о косых чертах в именах файлов, в основном от людей, которые хотели создать такие проблемы. Я ищу решение для борьбы с этими плохими именами файлов в Java.
Если я могу получить данные файла в InputStream, я буду золотой.
Обновление 1: это работает лучше как обновление, чем как комментарий, так как это меняет природу проблемы.
Я обнаружил, что в MacOS и, возможно, Linux, приложение Finder GUI показывает имена файлов с косой чертой, например:
Однако в терминале я вижу это:
Наконец, команда File.list() также интерпретирует это следующим образом:
Таким образом, решение заключается в использовании символа двоеточия ":" при чтении в файле. Оказывается, это одна из черт кроличьей норы, которая может включать кодирование ":" в "%3a" или двойное кодирование в "%253a". Ни один из них еще не работал в моих перестановках.