Архіватори перевірка файлу на стисливість, нестискувані типи файлів

Одним із завдань різних пакувальників та архіваторів є перевірка стискається файлу на стисливість. Іншими словами, перевірка на те, чи варто витрачати час на стиск нестисливого файлу, або залишити його в незмінному вигляді.

Розглянемо алгоритм перевірки файлу на стисливість. Алгоритм реалізований звичайними засобами Delphi 5 з використанням функцій FileOpen, ReadFile і FileClose.

Теоретично, нестисливий файл, це файл, частоти байт від 0 до 255 якого знаходяться приблизно в одному діапазоні величин. Тобто частота кожного символу приблизно дорівнює 0,39%. Розрахунки ведуться на файлах, довжина яких більше 10 Кб. Якщо підсумувати всі частоти, то в результаті отримаємо 100%.

Стискувані файли - це файли, розкид частот яких дуже великий. Наприклад, в звукових файлах (формат WAV) частота деяких байт доходить до десятків відсотків, а інших - до сотих відсотка. У текстових файлах деякі байти взагалі не зустрічаються.

Отже, розглянемо етапи визначення стисливості файлу:
    Читання файлу в пам'ять
    Підрахунок частот символів (словника файлу)
    Висновки про стисливості файлу

Читання файлу в пам'ять:

Підрахунок частот символів:

Після це кроку в кожному осередку масив "a" знаходиться кількість зустрінутих символів, код яких дорівнює номеру комірки.

Якщо підсумувати значення всіх осередків масиву, то отримаємо число, рівне розміру файлу.

Перевірка на вже стислі дані:

Змінні x1 і x2 вказують процентний діапазон, в якому відбувається порівняння. Якщо кількість символів з частотою з цього процентного діапазону більше четвертої частини всіх символів, то можна стверджувати, що файл вже пройшов процедуру стиснення.

Підсумки тестування алгоритму:

Дана процедура порівняння пройшла випробування на файлах декількох типів. Зауваження: параметр "нове стиснення" вказує на новий розмір файлу після його стиснення архіватором WinRar з максимальним ступенем стиснення.
    RAR-архів (187 КБ) стиснутий (нове стиснення = 187 Кб)
    WAV-файл (306 КБ) НЕ стиснутий (нове стиснення = 187 Кб)
    BMP-файл (938 КБ) НЕ стиснутий (нове стиснення = 259 Кб)
    DOC-файл (62 КБ) НЕ стиснутий (нове стиснення = 13 Кб)
    JPG-файл (167 КБ) стиснутий (нове стиснення = 168 Кб)
    MP3-файл (652 КБ) стиснутий (нове стиснення = 639 Кб)
    TXT-файл (131 КБ) НЕ стиснутий (нове стиснення = 17 Кб)
    HLP-файл (337 КБ) НЕ стиснутий (нове стиснення = 104 Кб)
    PDF-файл (1763 КБ) НЕ стиснутий (нове стиснення = 1558 Кб)
    EXE-файл (395 КБ) НЕ стиснутий (нове стиснення = 168 Кб)
    EXE-файл (упакований ASPack) (177 КБ) стиснутий (нове стиснення = 172 Кб)

Як видно з дослідів, алгоритм успішно показує стискувані і не дуже стискувані файли.

Apache - це кросплатформаенное програмне забезпечення, що відноситься до класу http-серверів. Підтримується безліччю операційних систем: Windows, Linux, MacOS і т.д. Одним з ключових чинників в питанні використання даного web-сервера є сучасною функціональністю та надійність виконання операцій. Apache включає в себе безліч додаткових модулів, що дозволяють працювати з різними базами даних, контролювати аутентифікацію користувачів і т.д.

Схожі статті