Skip to content

AykutAdm/Advanced-File-Compression---Indexing-System-using-Trees

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gelişmiş Dosya Yönetim Sistemi

Bu proje, Huffman kodlaması kullanarak metin dosyalarını sıkıştıran ve farklı ağaç yapıları kullanarak dosya indeksleme ve arama işlemlerini gerçekleştiren bir dosya yönetim sistemidir.

Özellikler

1. Sıkıştırma Modülü

  • Huffman Kodlaması: Metin dosyalarını sıkıştırma ve açma
    • Dinamik frekans analizi
    • Binary formatta sıkıştırılmış dosya (.bin)
    • Huffman kodlarının ayrı dosyada saklanması (.bin.codes)
    • Sıkıştırma oranı gösterimi

2. Depolama Modülü

  • B-Tree İndeksleme

    • Dosya ve dizin organizasyonu
    • Hiyerarşik yapı yönetimi
    • Tam dosya yolu indeksleme
  • Red-Black Tree Arama

    • Verimli dosya adı araması
    • Case-insensitive arama desteği
    • Kısmi eşleşme desteği

3. Kullanıcı Arayüzü

  • GUI (Grafiksel Kullanıcı Arayüzü)

    • Sıkıştırma ve Depolama sekmeleri
    • Sıkıştırma bilgilerinin gerçek zamanlı gösterimi
    • Gelişmiş arama seçenekleri (dosya adı/dizin yolu)
    • Arama sonuçlarının detaylı gösterimi
  • CLI (Komut Satırı Arayüzü)

    • Temel komutlar için komut satırı desteği
    • Sıkıştırma ve arama işlemleri için CLI komutları

Teknik Detaylar

Huffman Sıkıştırması

  1. Metin dosyasından karakter frekanslarının hesaplanması
  2. Huffman ağacının oluşturulması
  3. Karakter kodlarının çıkarılması
  4. Metnin sıkıştırılması ve binary formatta kaydedilmesi
  5. Kodlama bilgisinin ayrı dosyada saklanması

Ağaç Yapıları

  1. B-Tree

    • Minimum derece: 3
    • Dosya sistemi hiyerarşisini tutar
    • Tam dosya yollarını indeksler
  2. Red-Black Tree

    • Self-balancing özelliği
    • Dosya adlarını indeksler
    • Hızlı arama operasyonları

Kullanım

Sıkıştırma İşlemleri

  1. "Sıkıştırma" sekmesine geçin
  2. "Dosya Seç ve Sıkıştır" butonuna tıklayın
  3. Sıkıştırılacak metin dosyasını (.txt) seçin
  4. Sıkıştırılmış dosyanın kaydedileceği konumu seçin
  5. İşlem sonucu ve sıkıştırma oranı ekranda gösterilecektir

Dosya Arama

  1. "Depolama" sekmesine geçin
  2. Dosya veya klasör ekleyin
  3. Arama tipini seçin (Dosya Adı / Dizin Yolu)
  4. Arama terimini girin
  5. "Ara" butonuna tıklayın

Proje Yapısı

  • main_gui.py: GUI uygulaması
  • main_cli.py: CLI uygulaması
  • huffman.py: Huffman kodlama işlemleri
  • btree.py: B-Tree implementasyonu
  • rbtree.py: Red-Black Tree implementasyonu

Gereksinimler

tkinter
ttkthemes

Kurulum

  1. Gerekli kütüphaneleri yükleyin:
pip install -r requirements.txt
  1. Uygulamayı başlatın:
python main_gui.py

Önemli Notlar

  1. Sıkıştırma işlemi iki dosya oluşturur:

    • .bin: Sıkıştırılmış veri
    • .bin.codes: Huffman kodları
  2. B-Tree ve Red-Black Tree farklı amaçlar için kullanılır:

    • B-Tree: Dosya/dizin organizasyonu
    • Red-Black Tree: Dosya adı araması
  3. Arama işlemi seçilen tipe göre farklı ağaç yapılarını kullanır:

    • Dosya Adı araması: Red-Black Tree
    • Dizin Yolu araması: B-Tree

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages