检查文件的字节数是否足够
本文关键字:是否 字节数 文件 检查 | 更新日期: 2023-09-27 17:53:42
出于安全目的,我试图通过其字节来验证该文件是.rar文件。以下代码是我的代码,唯一的问题是子标题与从文件生成的子标题不匹配。我注意到不同的文件是不同的。你能给我解释一下原因吗?
static bool IsRARFile(string filePath)
{
bool isDocFile = false;
//
// File sigs from: http://www.garykessler.net/library/file_sigs.html
//
string msOfficeHeader = "52-61-72-21-1A-07-00-CF";
string docSubHeader = "64-2E-63-73";
using (Stream stream = File.OpenRead(filePath))
{
//get file header
byte[] headerBuffer = new byte[8];
stream.Read(headerBuffer, 0, headerBuffer.Length);
string headerString = BitConverter.ToString(headerBuffer);
if (headerString.Equals(msOfficeHeader, StringComparison.InvariantCultureIgnoreCase))
{
//get subheader
byte[] subHeaderBuffer = new byte[4];
stream.Seek(512, SeekOrigin.Begin);
stream.Read(subHeaderBuffer, 0, subHeaderBuffer.Length);
string subHeaderString = BitConverter.ToString(subHeaderBuffer);
if (subHeaderString.Equals(docSubHeader, StringComparison.InvariantCultureIgnoreCase))
{
isDocFile = true;
}
}
}
return isDocFile;
}
这是因为您刚刚为不同的文件类型从某处复制了一个函数,并不是每个文件类型都有任何"子标题"的概念。在RAR的情况下,您只需要检查主标题。
我还建议修改变量的命名,如果一个函数说它正在检查RAR类型,并且内部所有变量都引用DOCs,这是相当混乱的。