Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java EE (J2EE) и Spring > Отличить тип файла (банрный или текстовый) |
Автор: 0x00 29.7.2011, 08:19 |
Добрый день! Возникла задача - отличить бинарный файл от текстового. гугл читал, внятных ответов не нашел. Если ктонибудь сталкивался с подобной проблемой, прошу совета.. Заранее благодарен! |
Автор: jk1 29.7.2011, 11:08 |
Кодировка текста или формат бинарного файла известны? |
Автор: 0x00 29.7.2011, 11:41 | ||
необходимо отлечить обычный *.txt файл (ANSI) от любого другого файла (архив, исполняемый файл, картинка).. расширение файла в расчет не брать.., т.к. у некоторых текстовых файлов вообще нету расширения |
Автор: jk1 29.7.2011, 13:45 |
Без дополнительных предположений ничего у Вас не выйдет. Это для Вас файлы делятся на бинарные и текстовые, а в памяти все это последовательности байтов, не более того. Существует немало способов отличить одно от другого, но все они работают в определенных предположениях: 1. Поиск 0x00 или других управляющих символов. Работает в большинстве случаев, если текст предполагается в ASCII. Если текст в юникоде, этот способ практически бесполезен. 2. Попытка опознать популярные бинарные форматы в файле. Неплохо справляется, если есть ограниченный перечень бинарных форматов, которые будут приходить на вход. 3. Можно полагаться на то, что только текстовые файлы обычно содержат побелы в значительных количествах. Способ не идеален, да и текст можно без пробелов написать. Можно также почерпать вдохновения в механизмах работы утилиты file: http://linux.about.com/library/cmd/blcmdl1_file.htm или посмотреть, как справляется с проблемой http://blogs.msdn.com/b/oldnewthing/archive/2007/04/17/2158334.aspx Возьму на себя смелость утверждать, что для произвольной кодировки и неограниченного количества бинарных форматов решения в общем случае нет. |
Автор: MaxPayneC 29.7.2011, 20:09 |
Для того чтобы отличить текстовый файл от бинарного, необходимо дать определение понятию "текстовый файл", без использования интуитивно-понятных терминов. Т.е. "текстовый файл это файл, содержащий текст" не подойдет. Возможно подойдет что-то типа "текстовый файл это файл, содержащий символы с ASCII-кодами из заданного множества", но это предположение, о котором писал jk1. |
Автор: COVD 30.7.2011, 05:16 |
Вопрос филосоВский, не Java и тем более не J2EE. |
Автор: 0x00 1.8.2011, 13:50 | ||
подошло решение с поиском null'ов (0x00) в теле файла. результат устроил.. изображения, архивы и иполныемые файлы отсеиваются на ура...
|