Проверка на текстовый файл.
От: FaT_DH  
Дата: 17.04.06 13:31
Оценка:
Здравствуйте! Пишу приложение, что то на подобе текстового редактора, нужно ввести проверку на то, что файл является текстовым, если нет, то выкинуть исключение. Подскажите пожалуйста как бы это лучше сделать. Зараннее благодарен.

09.05.06 01:32: Перенесено из 'C/C++. Прикладные вопросы'
Re: Проверка на текстовый файл.
От: V.I.P. Россия  
Дата: 17.04.06 13:48
Оценка:
Здравствуйте, FaT_DH, Вы писали:

FT_>Здравствуйте! Пишу приложение, что то на подобе текстового редактора, нужно ввести проверку на то, что файл является текстовым, если нет, то выкинуть исключение. Подскажите пожалуйста как бы это лучше сделать. Зараннее благодарен.


Ну проверяй расширения файлов (txt, doc ...) , ну и открывай =))
Re: Проверка на текстовый файл.
От: megawatt Россия http://ruby.inuse.ru
Дата: 17.04.06 14:25
Оценка: +1
Как вариант искать нули
Re: Проверка на текстовый файл.
От: Elich  
Дата: 17.04.06 19:06
Оценка: +1
FT_>Здравствуйте! Пишу приложение, что то на подобе текстового редактора, нужно ввести проверку на то, что файл является текстовым, если нет, то выкинуть исключение. Подскажите пожалуйста как бы это лучше сделать. Зараннее благодарен.

Ответ кроется в вопросе: а что такое текстовый файл? Содержание каких символов в файле делает его не текстовым?
Re: Проверка на текстовый файл.
От: Alny Украина  
Дата: 18.04.06 07:49
Оценка:
FT_>Здравствуйте! Пишу приложение, что то на подобе текстового редактора, нужно ввести проверку на то, что файл является текстовым, если нет, то выкинуть исключение. Подскажите пожалуйста как бы это лучше сделать. Зараннее благодарен.

Определить множество символов, которые могут входить в текстовый файл (a-Z,а-Я,!,",№, и т. д.). В случае, если файл содержит символ, не пренадлежащий допустимому множеству — ругаться.
Все это для Ascii текстовых файлов.
Re: Проверка на текстовый файл.
От: trophim Россия  
Дата: 08.05.06 19:03
Оценка: 11 (4) +1
Я делал по среднеквадратичному отклонению вероятностей значений байта.

Это только звучит заумно, а на самом деле элементарно. Сначала готовим эталонные таблицы вероятностей.
1. Берем любой текстовый файл (англ\рус) — считаем для него вероятности появления всех значений (0..255).
2. В бинарном файле появление всех значений равновероятно (т.е. == 1/256).
3. Теперь, имея 2 таких таблички, читаем проверяемый файл (можно и не весь, а только часть или, как я — кусок в начале, в середине и в конце), подсчитываем как и выше вероятности появления значений байта.
4. Смотрим на какую эталонную таблицу больше будет похоже то, что мы насчитали (считаем среднеквадратичное отклонение: чем оно меньше, тем больше схожесть).
5. Делаем вывод о том, на что больше похож наш файл: на текст или на бинарник.
6. Думаем, что мы молодцы, потому как у меня все работало на ура.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Let it be! — Давайте есть пчелу!
Re[2]: Проверка на текстовый файл.
От: GreyJedi  
Дата: 15.05.06 06:22
Оценка:
Здравствуйте, trophim, Вы писали:

T>Я делал по среднеквадратичному отклонению вероятностей значений байта.


T>Это только звучит заумно, а на самом деле элементарно. Сначала готовим эталонные таблицы вероятностей.

T>1. Берем любой текстовый файл (англ\рус) — считаем для него вероятности появления всех значений (0..255).
T>2. В бинарном файле появление всех значений равновероятно (т.е. == 1/256).
T>3. Теперь, имея 2 таких таблички, читаем проверяемый файл (можно и не весь, а только часть или, как я — кусок в начале, в середине и в конце), подсчитываем как и выше вероятности появления значений байта.
T>4. Смотрим на какую эталонную таблицу больше будет похоже то, что мы насчитали (считаем среднеквадратичное отклонение: чем оно меньше, тем больше схожесть).
T>5. Делаем вывод о том, на что больше похож наш файл: на текст или на бинарник.
T>6. Думаем, что мы молодцы, потому как у меня все работало на ура.

Работать на ура будет только на больших файлах.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.