Это вызов для некоторого статистического сопоставления с образцом.Например, вы могли бы, если вы работали только с английским языком, проверить, сколько «иностранных» символов появляется в первых 100 символах.Это должно дать вам довольно хорошее представление о том, является ли это текстовым документом или нет.Если вы встретите слишком много символов, которые не являются ... zA..Z0..9 [пунктуация], то вы можете догадаться, что это не текст.Работая с англоязычными файлами и языками, которые можно выразить, используя в основном список символов ASCII, вы должны быть относительно безопасны.
Это, конечно, выходит из окна в тот момент, когда вы начинаете работать с иностранными языками, где некоторыеиз символов может показаться специальными символами, но только для тех, кто не говорит на этом языке.
Другой альтернативой является использование файловых маркеров (как в Java файл класса начинается с определенного заголовка) и сравнениезначения в файле для библиотеки заголовков.Он также громоздок и подвержен ошибкам, поскольку у вас может не быть записанного файла, и поэтому вы можете подумать, что это текстовый файл, когда его нет.