![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
Добрый день!
Возникла задача - отличить бинарный файл от текстового. гугл читал, внятных ответов не нашел. Если ктонибудь сталкивался с подобной проблемой, прошу совета.. Заранее благодарен! |
|||
|
||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 5 Всего: 75 |
Кодировка текста или формат бинарного файла известны?
-------------------- Opinions are like assholes — everybody has one |
|||
|
||||
0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
необходимо отлечить обычный *.txt файл (ANSI) от любого другого файла (архив, исполняемый файл, картинка).. расширение файла в расчет не брать.., т.к. у некоторых текстовых файлов вообще нету расширения Это сообщение отредактировал(а) 0x00 - 29.7.2011, 13:34 |
|||
|
||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 5 Всего: 75 |
Без дополнительных предположений ничего у Вас не выйдет. Это для Вас файлы делятся на бинарные и текстовые, а в памяти все это последовательности байтов, не более того.
Существует немало способов отличить одно от другого, но все они работают в определенных предположениях: 1. Поиск 0x00 или других управляющих символов. Работает в большинстве случаев, если текст предполагается в ASCII. Если текст в юникоде, этот способ практически бесполезен. 2. Попытка опознать популярные бинарные форматы в файле. Неплохо справляется, если есть ограниченный перечень бинарных форматов, которые будут приходить на вход. 3. Можно полагаться на то, что только текстовые файлы обычно содержат побелы в значительных количествах. Способ не идеален, да и текст можно без пробелов написать. Можно также почерпать вдохновения в механизмах работы утилиты file: читать тут или посмотреть, как справляется с проблемой Notepad Возьму на себя смелость утверждать, что для произвольной кодировки и неограниченного количества бинарных форматов решения в общем случае нет. Это сообщение отредактировал(а) jk1 - 29.7.2011, 13:56 -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 3 Всего: 9 |
Для того чтобы отличить текстовый файл от бинарного, необходимо дать определение понятию "текстовый файл", без использования интуитивно-понятных терминов. Т.е. "текстовый файл это файл, содержащий текст" не подойдет.
Возможно подойдет что-то типа "текстовый файл это файл, содержащий символы с ASCII-кодами из заданного множества", но это предположение, о котором писал jk1. |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Вопрос филосоВский, не Java и тем более не J2EE.
|
|||
|
||||
0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
подошло решение с поиском null'ов (0x00) в теле файла.
результат устроил.. изображения, архивы и иполныемые файлы отсеиваются на ура...
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |