通常、ファイルがテキストファイルであるかどうかを確実に検出することはできません。それは一般的な問題、実際には「テキストファイル」とは何かから始まります。あなたはすでにエンコーディングをほのめかしましたが、特にそれらは確実に検出することができません(例えば、メモ帳の闘争を参照してください)。
そうは言っても、ヒューリスティックを使用して最善を尽くすことができるかもしれません(もちろん、ファイル拡張子を含みますが、これらに限定されません。EXE、DLL、ZIP、画像ファイルなどのよく知られた非ファイルタイプを除き、それらの署名を認識します。ブラウザやメモ帳で使用されるアプローチと組み合わせることができます)。
アプリケーションによっては、スキャンするファイルをユーザーに選択させるだけで、かなり実現可能だと思います(* .cs、*。txt、*。resx、*などの拡張子のデフォルトリストがある場合もあります)。 xml、...)。ファイル(タイプ)/拡張子がデフォルトのリストになく、ユーザーによって追加されなかった場合、それはカウントされません。ユーザーが「テキストファイル」ではないファイルタイプ/拡張子をリストに追加した場合、結果は役に立ちません。
しかし、労力と、自動結果が(すべての可能なファイルを検出する際に)100%正確になることは決してないという事実を比較すると、十分に良いはずです。