Конечно, это будет работать только для реального ASCII. Не для других персонажей с акцентами
============================================================================================

 могу проверить, является ли файл, который я открываю в C #, используя FileStream, файлом "текстового типа"? Я хотел бы, чтобы моя программа открывала любой текстовый файл, например, .txt, .html и т. Д.

Но нельзя открывать такие вещи, как .doc или .pdf или .exe и т. Д.

 вы могли бы просто проверить первые 1000 (произвольное число) символов и посмотреть, есть ли непечатаемые символы или все они находятся в определенном диапазоне. Если последнее, предположить, что это текст?

Что бы вы ни делали, это будет предположение.



Текстовый файл, хранящийся в UTF-16, вероятно, будет выглядеть как двоичный, если вы откроете его с 8-битной кодировкой. Точно так же кто-то может сохранить текстовый файл как`.doc` (это документ).

В то время как вы можете открыть файл и посмотреть на некоторый контент, все такие эвристики иногда будут давать сбой (например, блокнот пытается это сделать, при тщательном выборе нескольких символов блокнот угадает неправильно и отображает совершенно другой контент).

Если у вас есть конкретный сценарий, вместо того, чтобы открывать и обрабатывать что-либо, у вас должно получиться намного лучше.



Чтобы получитьреальный тип файла, вы должны проверить его заголовок, который не будет изменен, даже если расширение будет изменено. Вы можете получить список заголовков[Вот](https://web.archive.org/web/20110804162350/http://toorcon.techpathways.com/uploads/headersig.txt)и используйте что-то вроде этого в вашем коде: