「読めない」内容のファイルを効果的に無視したいので、「テキストファイル」と「バイナリ」ファイルを区別しようとしています。
GZIP アーカイブと思われるファイルがあります。マジック ナンバー / ファイル シグネチャを検出して、この種のファイルを無視しようとしています。Notepad++ で Hex エディター プラグインを使用してファイルを開くと、最初の 3 つの 16 進コードが1f 8b 08
.
ただし、を使用してファイルを読み取った場合StreamReader
、元のバイトに到達する方法がわかりません..
using (var streamReader = new StreamReader(@"C:\file"))
{
char[] buffer = new char[10];
streamReader.Read(buffer, 0, 10);
var s = new String(buffer);
byte[] bytes = new byte[6];
System.Buffer.BlockCopy(s.ToCharArray(), 0, bytes, 0, 6);
var hex = BitConverter.ToString(bytes);
var otherhex = BitConverter.ToString(System.Text.Encoding.UTF8.GetBytes(s.ToCharArray()));
}
using ステートメントの最後には、次の変数値があります。
hex: "1F-00-FD-FF-08-00"
otherhex: "1F-EF-BF-BD-08-00-EF-BF-BD-EF-BF-BD-0A-51-02-03"
どちらも Notepad++ に示されている 16 進値で始まりません。
経由でファイルを読み取った結果から元のバイトを取得することは可能StreamReader
ですか?