public static bool JudgeIsSpecialFormat(string sFileName)
{
bool xx=false; //default sFileName is not Exe or Dll File
System.IO.FileStream fs = new System.IO.FileStream(sFileName,System.IO.FileMode.Open,
System.IO.FileAccess.Read);
System.IO.BinaryReader r = new System.IO.BinaryReader(fs);
string bx = "";
byte buffer;
try
{
buffer = r.ReadByte();
bx = buffer.ToString();
buffer = r.ReadByte();
bx += buffer.ToString();
}
catch (Exception exc)
{
Console.WriteLine(exc.Message);
}
finally
{
if (r != null) r.Close();
if (fs != null) fs.Close();
}
if (bx == "7790" || bx == "8297" || bx == "8075")//7790:exe,8297:rar,8075:pk (zip)
{
xx=true;
}
Console.WriteLine(bx);
return xx;
}
I still have no idea about what the file header is. And when I applied this to check the files in one of my local folder, I found
.css files: "xx" can be "4742" or "46110";
as it is shown, TXT files (.css) can have different values -- I must admit I editted one of the .css file with EditPlus, this might cause the differency -- so at present I still do not know how to judge whether a file is of TXT format, until I can list all the possible "xx" value for it.
More "xx" possible values of different files:
.gif files: "7173"
.ppt files: "208207"
.log files: "4545"
.txt files: "4545", "3232", "60104"
.html files: "60104"
.xml files: "6063"
.xsd files: "6063"
.xls files: "208207"
.doc files: "208207"
.msi files: "208207"
.jpg files: "6677"
.JPG files: "255216"
.js files: "102117"
.conf files: "3513"
.jar files: "8075" -- so it can be opened by winzip?