0

我正在尝试确定文件是否已使用 GZip 协议压缩。

共识似乎是我需要读取文件的前两个字节,并检查它们是否等于0x1f8b. 我刚刚了解到这被称为幻数。

我如何(最好使用 .Net/C#,因为这是我的习惯)读取文件的各个字节?

谢谢

4

3 回答 3

2

你可以试试这个...

您可能需要为 v 使用不同的变量类型,或者您可以转换 int ...

using (BinaryReader b = new BinaryReader(File.Open("file.bin", FileMode.Open)))
{
    int v = b.ReadByte();
    Console.WriteLine(v);
}
于 2012-09-06T16:55:32.350 回答
1

读取文件的两个(第一个)字节的最简单方法是打开 FileStream,然后只读取两个字节:

FileStream fs = new FileStream( "D:\\path_to_file\file.ext", FileMode.Open);
int value = fs.ReadByte();
...

当然,您应该检查文件是否存在,如果应用程序没有以足够的权限运行以读取文件,则捕获异常,完成后关闭流(访问文件)...

使用 FileStream 的方法可能更方便Read(它允许您一次读取多个字节)。请注意,此方法也有异步等效方法可用。

于 2012-09-06T16:49:51.897 回答
0

通常在常见的 x86 中,char 是一种字节长的数据类型,因此读取文件的前两个字符就可以了。

于 2012-09-06T16:49:45.950 回答