Node.js'deki dosyaları sıkıştırmak ve açmak için Archiver ve Unzipper paketlerinden yararlanın.
Dosyaları veya klasörleri daha küçük, taşınabilir biçimlerde sıkıştırmanın sunduğu avantajları herkes kanıtlayabileceğinden, dosya arşivleme modern dünyada günlük bir etkinliktir.
ZIP formatı, bilgi işlem dünyasında kullanılan en popüler arşiv formatlarından biridir ve şiddetle tavsiye edilir. Daha iyi depolama, verimli aktarım veya başka herhangi bir işlem için ham dosyaları arşivlere dönüştürmesi gereken herkesin tercihi sebep.
Öyleyse neden dosyalarınızı sıkıştırmayı düşünmelisiniz ve Node.js kullanarak dosyaları ZIP olarak nasıl sıkıştırabilir ve programlı olarak orijinal durumlarına geri çıkarabilirsiniz?
Neden Dosyaları Sıkıştırın?
Çoğu zaman, dosyalar ve klasörler çok büyür ve bunları paylaşmak veya aktarmak bir sorun haline gelir çünkü bunlar ya belirli bir kapasiteye sahip bir depolama sürücüsünde depolamak için çok büyükler ya da buluta yüklemeleri çok uzun sürüyor depolamak.
Bunun gibi ve daha birçok senaryoda, bu tür dosya veya klasörleri çok daha küçük bir boyuta sıkıştırmalısınız. Daha kolay dosya aktarımının yanı sıra, dosyalarınızı sıkıştırmayı düşünmenizin diğer nedenleri arasında şunlar yer alır:
- verimli depolama
- Daha iyi dosya yapısı ve organizasyonu
- Güvenlik (dosya şifreleme ve parola koruması)
- dosya bütünlüğü
- Dosya sürümü oluşturma
Node.js Archiver ve Unzipper Paketleri Nelerdir?
bu Arşiv paketin resmi belgeleri, paketi "arşiv üretimi için bir akış arabirimi" olarak tanımlar. Bu, Archiver paketinin, sıkıştırılmış dosya arşivleri oluşturmak için Node.js akışlarından yararlanan bir işlev kitaplığı sağladığı anlamına gelir.
Archiver paketi varsayılan olarak ZIP, GZIP ve TAR dahil birden çok arşiv biçimini destekler. Paket ayrıca dosyalardan ve dizinlerden arşivler oluşturmanıza ve büyük arşivleri daha küçük parçalara ayırmanıza (çok ciltli arşivler) olanak tanır. Ayrıca sıkıştırma sırasında dosyaları dışlamanıza veya filtrelemenize olanak tanır.
bu Fermuar aç package, Node.js'deki ZIP arşivlerini çıkarmak için çok verimli bir pakettir. Paket, geliştiricilerin yalnızca birkaç satır kodla ZIP dosyalarını ayıklamasına olanak tanıyan, kullanımı kolay bir API sağlar.
Archiver ve Unzipper paketleri, Node.js ile sorunsuz bir şekilde entegre oldukları için bu eğitim için seçeneklerdir. fs modül, sorunsuz uyumluluk ve basitlik sağlar.
Node.js'de Dosyaları ZIP Biçiminde Sıkıştırma
Dosyaları sıkıştırma Archiver paketi sayesinde, Node.js'de ZIP formatına dönüştürmek, diğer herhangi bir dilde olduğu gibi kolaydır. Bu bölümü takip ederken Node.js'de ZIP arşivleri oluşturmak için, bilgisayarınızda kurulu bir Node.js geliştirme ortamına ihtiyacınız vardır.
Bir dosyayı ve klasörü ZIP biçiminde sıkıştırmak için basit bir Node.js betiği oluşturacaksınız. Aşağıdaki komutları çalıştırarak bilgisayarınızda yeni bir Düğüm projesi oluşturun:
mkdir node-zip-archiver
CD düğüm-zip-arşivleyici
npm başlatma -y
Ardından, projenize Archiver paketini yüklemeniz gerekir. Koşmak npm arşivleyiciyi kur -- kaydet yüklemek için terminalinizde. Paket kurulumu tamamlandığında, proje dizininde yeni bir dosya oluşturun ve tercihinize göre adlandırın, örn. uygulama.js veya arşivleyici.js.
bu fs modülü dosya işlemlerini gerçekleştirirken, Archiver paketi dosyaların ve klasörlerin ZIP arşivlerine sıkıştırılmasını gerçekleştirir, bu nedenle komut dosyası her iki modülü de gerektirir.
Dosyalardan ZIP Arşivleri Oluşturma
Aşağıdaki kod, bir dosyayı bağımsız değişken olarak kabul eden ve dosyanın sıkıştırılmış bir ZIP sürümünü oluşturan bir işlevin uygulanmasıdır.
sabit arşivleyici = gerekmek('Arşiv')
sabit fs = gerekmek('fs')// dosyadan ZIP oluştur
sabit createZipFromFile = (dosya) => {
sabit dosyaYolu = __dirname + '/' + dosya
sabit çıktı = fs.createWriteStream (filePath + ".zip")
sabit arşiv = arşivleyici("zip", {
{ seviye: 9 } // sıkıştırma seviyesini en yükseğe ayarla
})
arşiv.pipe (çıktı);
arşiv.dosya (dosyaPath, { isim: dosya })
arşiv.sonlandır()
}
İşlev, sıkıştırılacak dosyanın adını alır ve benzer ada sahip bir çıktı dosyası oluşturur (tek fark, ZIP dosya uzantısının eklenmesidir).
Ardından işlev, sıkıştırma düzeyi 9'a (en yüksek) ayarlı yeni bir arşiv oluşturur ve boru arşivin çıktı akışlarını çıktı dosyasının girdisine aktarma işlevi.
bu dosya işlevi arşive bir dosya ekler. Dosya yolunu bir parametre ve isteğe bağlı olarak kabul eder. seçenekler arşivdeki dosyanın özelliklerini belirtebileceğiniz parametre.
bu isim seçeneği, arşivdeki dosyanın adını belirtir. Arşive bir dosya eklenirken seçenek belirtilmezse, Archiver, dizin yapısını koruyarak dosyayı orijinal yoluna göre arşive yerleştirir.
Ancak açıkça sağlandığında, Archiver dosyayı orijinal yolu olmadan arşive ekleyerek arşiv içinde özel adlandırma ve düzenlemeye izin verir.
Klasörlerden ZIP Arşivi Oluşturma
Klasörlerden ZIP arşivi oluşturma işlemi, dosyalar için olandan çok farklı değildir. Ana fark, Archiver paketinin kullanılmasıdır. dizin karşıt işlev dosya önceki işlevde.
Aşağıda, bir klasörü bir ZIP arşivine sıkıştırma işlevinin uygulanması yer almaktadır.
// klasörden ZIP oluştur
sabit createZipFromFolder = (dosya) => {
sabit klasörYolu = __dirname + '/' + klasör
sabit çıktı = fs.createWriteStream (klasörPath + ".zip")sabit arşiv = arşivleyici("zip", {
{ seviye: 9 } // sıkıştırma seviyesini en yükseğe ayarla
})
arşiv.pipe (çıktı)
arşiv.dizin (klasörPath, YANLIŞ)
arşiv.sonlandır()
}
bu dizin işlev, ilk bağımsız değişkeni olarak klasör yolunu ve ikinci bağımsız değişkeni olarak bir bayrağı alır. Bayrak, klasörün arşiv içindeki yerleşimini belirler.
Bayrak ayarlandığında YANLIŞ, ortaya çıkan arşiv, klasörün kendisi hariç yalnızca klasörün içeriğini içerecektir. Ancak bayrak şu şekilde ayarlanırsa doğru, Archiver, klasörün kendisini oluşturulan arşive dahil edecek
Arşivinizi çıkardığınız konumu sıkıştırılmış arşivdeki dosyalarla kirletmekten kaçınmak istiyorsanız, bayrak seçeneği doğru. Ancak, şu şekilde ayarlayabilirsiniz: YANLIŞ, amaçlarınıza daha uygunsa.
Node.js'de Sıkıştırılmış Dosyaları Açma
Node.js'de ZIP dosyalarını çıkarma işleminde birden fazla yaklaşım vardır ve birkaç kitaplık kullanılabilir, ancak bu makalede Unzipper paketi kullanılmıştır.
Unzipper paketini projenize kurmak için terminalinizde aşağıdaki komutu çalıştırın.
npm unzipper'ı kur -- kaydet
Paketi kurduktan sonra, kodunuza aktarın ve aşağıdaki kodda gösterilen ZIP ayıklama işlevini uygulayın:
sabit fermuarı aç = gerekmek("fermuarını aç")
// ZIP dosyasını ayıklamak için işlev
sabit zip özü = zaman uyumsuz (dosya) => {
sabit dosyaYolu = __dirname + '/' + dosya
sabit outputPath = __dirname + '/çıkarıldı'
beklemek fs.createReadStream (dosyaPath)
.pipe (fermuarını aç. Çıkarmak({ yol: çıkış yolu }))
.söz()
}
bu özüZip işlevi, ZIP dosyasının içeriğini okumak için bir okuma akışı oluşturan ve dosyayı belirtilen çıktı yoluna çıkaran eşzamansız bir işlevdir ( çıkarılan yoksa klasör).
Sıkıştırılmış açma veya çıkarma durumunda, bir ZIP arşivi içeriği ne olursa olsun bir dosya olduğundan, dosya ve klasörler için farklı işlevler tanımlamaya gerek yoktur.
Şimdiye kadar oluşturduğunuz fonksiyonları test etmek için uygulamaya ekleyebileceğiniz bir fonksiyon aşağıdadır:
(zaman uyumsuzişlev () {
sabit dosya = 'test.pdf'
sabit klasör = "test_klasörü"
sabit zipDosyası = 'test.pdf.zip'
createZipFromFile (dosya)
konsol.kayıt("ZIP arşivi dosyadan başarıyla oluşturuldu")
createZipFromFolder (klasör)
konsol.kayıt("ZIP arşivi klasörden başarıyla oluşturuldu")
beklemek ExtractZip (zipDosyası)
konsol.kayıt("ZIP arşivi başarıyla çıkarıldı")
}) ()
Önceki tüm işlevler JavaScript ok işlevleri, ancak yukarıdaki işlev farklıdır çünkü bir Hemen Çağrılan İşlev İfadesi O kodu kapsüller içinde ve hemen yürütür.
Dosya Sıkıştırma, Verimli Uygulamalar Oluşturmada Faydalıdır
Kullanıcılara daha iyi hizmet vermek ve keyifli bir kullanıcı deneyimi sağlamak için uygulamalarınızı olabildiğince verimli hale getirmek her zaman bir hedef olmalıdır.
Uygulamanız içinde çok fazla dosya aktarmanız gereken senaryolarda, iletim sırasında dosyaları sıkıştırmayı ve sıkıştırmayı açmayı düşünün. Çoğu modern programlama dili, dosyaları verimli bir şekilde sıkıştırmak ve açmak için destek sağlar.