我正在尝试确定文件是否已使用 GZip 协议压缩。
共识似乎是我需要读取文件的前两个字节,并检查它们是否等于0x1f8b
. 我刚刚了解到这被称为幻数。
我如何(最好使用 .Net/C#,因为这是我的习惯)读取文件的各个字节?
谢谢
我正在尝试确定文件是否已使用 GZip 协议压缩。
共识似乎是我需要读取文件的前两个字节,并检查它们是否等于0x1f8b
. 我刚刚了解到这被称为幻数。
我如何(最好使用 .Net/C#,因为这是我的习惯)读取文件的各个字节?
谢谢
你可以试试这个...
您可能需要为 v 使用不同的变量类型,或者您可以转换 int ...
using (BinaryReader b = new BinaryReader(File.Open("file.bin", FileMode.Open)))
{
int v = b.ReadByte();
Console.WriteLine(v);
}
读取文件的两个(第一个)字节的最简单方法是打开 FileStream,然后只读取两个字节:
FileStream fs = new FileStream( "D:\\path_to_file\file.ext", FileMode.Open);
int value = fs.ReadByte();
...
当然,您应该检查文件是否存在,如果应用程序没有以足够的权限运行以读取文件,则捕获异常,完成后关闭流(访问文件)...
使用 FileStream 的方法可能更方便Read
(它允许您一次读取多个字节)。请注意,此方法也有异步等效方法可用。
通常在常见的 x86 中,char 是一种字节长的数据类型,因此读取文件的前两个字符就可以了。