Форум программистов, компьютерный форум, киберфорум
Наши страницы
stpigidy
Войти
Регистрация
Восстановить пароль
Оценить эту запись

C# является ли файл gzip-архивом

Запись от stpigidy размещена 26.05.2018 в 16:17

Возникла задача работать с данными, которые могут быть сжаты в gzip-архив. Соответственно, необходимо было определить, является ли файл gzip-архивом. Это довольно просто, gzip-архив можно определить по сигнатуре 1f 8b 08 00. Проверку целостности оставим на функцию распаковки, и если вышеуказанная сигнатура обнаружена в начале файла, то будем считать, что перед нами архив gzip.
Вот функция проверки:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public bool IsGZip(string filename)
        {
            byte[] buf = null;
            try
            {
                buf = File.ReadAllBytes(filename);
            }
            catch
            {
                return false;
            }
 
            if (buf.Length < 4) return false;
 
            if ((buf[0] == 0x1F) && (buf[1] == 0x8B) &&
                (buf[2] == 0x08) && (buf[3] == 0x00))
                return true;
 
            return false;
        }
Если файл очень большой, то File.ReadAllBytes не подойдет. Надо будет через StreamReader или FileStream прочесть только первые 4 байта:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public bool IsGZip(string filename)
        {
            int signlen = 4;
            int count = 0;
            byte[] buf = new byte[signlen];
            FileStream readStream = null;
            try
            {
                readStream = new FileStream(filename, FileMode.Open);
                count = readStream.Read(buf, 0, signlen);
            }
            catch
            {
                return false;
            }
            readStream.Close();
 
            if (count < 4) return false;
 
            if ((buf[0] == 0x1F) && (buf[1] == 0x8B) &&
                (buf[2] == 0x08) && (buf[3] == 0x00))
                return true;
 
            return false;
        }
Код на PasteBin
Код на PasteBin (вариант 2)

Источник

Оригинал заметки на моем сайте: http://tolik-punkoff.com/2018/05/04/...-gzip-arhivom/
Размещено в Без категории
Просмотров 317 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru