Я так полагаю, что в начало файла пишется некая системная информация, содержащая метаданные файла, т.е. его тип в том числе? В жаве есть класс, которым можно посмотреть эту инфу? FileTypeDetector?
https://docs.oracle.com/javase/tutorial/essential/io/fileAttr.html
В общем произвольном случае в файле ничего не пишется
А как тогда рандомный онлайн-анализатор файлов узнаёт его тип?
Рандомный онлайн-анализатор не гарантирует результат У каких-то файлов есть расширение, у каких-то есть заголовок с метаданными, по которым можно определить тело - но это касается не всех файлов ни фига, а тех, что касается, часто касается с какими-то оговорками (гугли такое бородатое понятие, как рарджпег)
Посмотри на такую штуку как Apache Tika
Да, уже нашёл про него инфу. Я просто учебный проект пилю и вряд ли использование апача там подразумевается, да и смысл, тогда уже проще просто решение "из коробки" взять
Интересный лайфхак🙂
Если это учебный проект, не достаточно ли будет просто проверять расширение файла?
А вот это было бы слишком просто, да и условием не предусмотрено. Я так чувствую, что от меня хотят, чтобы я его через стрим прочитал, сконвертил в строку и регуляркой нашёл тип, но я так не хочу, интересно более оригинальный способ изучить. Пока что Files.probeContentType(path) вроде работает, но я так понял, что этот способ довольно сильно платформо-зависим
Регуляркой анализировать файл? Это очень плохая идея, даже не думай
У многих файлов есть заголовок в котором модно найти инфу ою этом файле
Ты не сможешь сконвертировать произвольный файл в сторону, заголовок у него ни фига не обязан быть текстовым, это просто набор байт, соответствующий спеке на тип файла
У pdf-1.3 да, но опять же см. https://t.me/javastart/447942
the program will search for a "%PDF-" in a file’s binary data and if found successfully will determine file type as "PDF document"
Обсуждают сегодня