Как правило, вы не можете надежно определить, является ли файл текстовым. Все начинается с общего вопроса, что на самом деле является «текстовым файлом». Вы уже намекали на кодировки, но особенно те, которые не могут быть надежно обнаружены (например, см. Борьба Блокнота).
При этом вы могли бы использовать эвристику для наилучшего результата (включая, но, конечно, не ограничиваясь расширениями файлов; исключая хорошо известные нефайловые типы, такие как EXE, DLL, ZIP, файлы изображений, с помощью распознавание их подписи; возможно, в сочетании с подходом, используемым браузеры или Блокнот).
В зависимости от вашего приложения, я думаю, было бы вполне реально просто позволить пользователю выбирать файлы для сканирования (возможно, имея список расширений по умолчанию для включения, например * .cs, * .txt, * .resx, *. xml, ...). Если файл (тип) / расширение отсутствует в списке по умолчанию и не был добавлен пользователем, он не учитывается. Если пользователь добавляет в список тип файла / расширение, не являющийся «текстовым файлом», результаты бесполезны.
Но если сравнить усилия и тот факт, что автоматический результат никогда не будет точным на 100% (при обнаружении всех возможных файлов), этого должно быть достаточно.
person
Christian.K
schedule
30.11.2011