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.
- 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
-
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
-
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ı
- Metin dosyasından karakter frekanslarının hesaplanması
- Huffman ağacının oluşturulması
- Karakter kodlarının çıkarılması
- Metnin sıkıştırılması ve binary formatta kaydedilmesi
- Kodlama bilgisinin ayrı dosyada saklanması
-
B-Tree
- Minimum derece: 3
- Dosya sistemi hiyerarşisini tutar
- Tam dosya yollarını indeksler
-
Red-Black Tree
- Self-balancing özelliği
- Dosya adlarını indeksler
- Hızlı arama operasyonları
- "Sıkıştırma" sekmesine geçin
- "Dosya Seç ve Sıkıştır" butonuna tıklayın
- Sıkıştırılacak metin dosyasını (.txt) seçin
- Sıkıştırılmış dosyanın kaydedileceği konumu seçin
- İşlem sonucu ve sıkıştırma oranı ekranda gösterilecektir
- "Depolama" sekmesine geçin
- Dosya veya klasör ekleyin
- Arama tipini seçin (Dosya Adı / Dizin Yolu)
- Arama terimini girin
- "Ara" butonuna tıklayın
main_gui.py: GUI uygulamasımain_cli.py: CLI uygulamasıhuffman.py: Huffman kodlama işlemleribtree.py: B-Tree implementasyonurbtree.py: Red-Black Tree implementasyonu
tkinter
ttkthemes- Gerekli kütüphaneleri yükleyin:
pip install -r requirements.txt- Uygulamayı başlatın:
python main_gui.py-
Sıkıştırma işlemi iki dosya oluşturur:
.bin: Sıkıştırılmış veri.bin.codes: Huffman kodları
-
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ı
-
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