Я использую DotNetZip в решении c # для проверки содержимого zip-файлов (в настоящее время используется v1.13.3). По некоторым причинам атрибуты файла, возвращаемые для различных ZipEntry, являются недействительными. Я получаю странные атрибуты с большими отрицательными числами (например, -211877848). Биты устанавливаются в атрибутах, которые не имеют смысла.
string filePath = @"C:\standard_skin.zip";
Console.WriteLine("Known Attributes: {0} {1}", KnownFileAttributes.ToString(), ((int)KnownFileAttributes).ToBitString());
using (ZipFile zip = ZipFile.Read(filePath))
{
foreach (ZipEntry zipEntry in zip.Entries)
{
FileAttributes zipAttributes = zipEntry.Attributes;
if ((zipAttributes & ~KnownFileAttributes) != 0)
{
Console.Write("*** ");
}
Console.WriteLine("Entry: {0}; Attributes: {1}; Bad Attributes: {2}; Known Attributes: {3} {4}", zipEntry.FileName, zipAttributes.ToString(), ((int)((zipAttributes & ~KnownFileAttributes))).ToBitString(), ((int)(zipAttributes & KnownFileAttributes)).ToBitString(), ((zipAttributes & KnownFileAttributes)).ToString());
}
}
При запуске приведенного выше кода, я получаю вывод, как это:
Known Attributes: ReadOnly, Hidden, System, Directory, Archive 00000000000000000000000000110111
*** Entry: dialog_button_border/bottom.png; Attributes: -2118778848; Bad Attributes: 10000001101101100000000000000000; Known Attributes: 00000000000000000000000000100000 Archive
*** Entry: dialog_button_border/bottomleft.png; Attributes: -2118778848; Bad Attributes: 10000001101101100000000000000000; Known Attributes: 00000000000000000000000000100000 Archive
Вот ссылка на используемый zip-файл:
https://drive.google.com/open?id=18BoKRrPzfz6fKqItlrWVgY6P3FtMvrAT