Искористите пакете Арцхивер и Унзиппер за компримовање и декомпресију датотека у Ноде.јс.

Архивирање датотека је свакодневна активност у савременом свету јер свако може да потврди предности које нуди компресовање датотека или фасцикли у мање, преносиве формате.

ЗИП формат је један од најпопуларнијих архивских формата који се користи у свету рачунарства и веома се препоручује избор за свакога ко треба да конвертује необрађене датотеке у архиве за боље складиштење, ефикасан пренос или било шта друго разлог.

Дакле, зашто бисте требали размислити о компримирању ваших датотека и како можете компримирати датотеке у ЗИП и програмски их извући у првобитно стање користећи Ноде.јс?

Зашто компримовати датотеке?

Много пута фајлови и фасцикле постају веома велики, а њихово дељење или пренос постаје проблем јер су или превелики за складиштење на диску одређеног капацитета, или им је потребно предуго за отпремање у облак складиште.

У сценаријима попут овог и многих других, требало би да компримујете такве датотеке или фасцикле у много мању величину. Осим лакшег преноса датотека, други разлози због којих бисте могли да размислите о компримовању датотека укључују:

instagram viewer

  • Ефикасно складиштење
  • Боља структура и организација датотека
  • Безбедност (шифровање датотека и заштита лозинком)
  • Интегритет датотеке
  • Версионирање датотека

Шта су пакети за архивирање и распакивање Ноде.јс?

Тхе Арцхивер званична документација пакета описује пакет као "стриминг интерфејс за генерисање архиве". Ово имплицира да пакет Арцхивер обезбеђује библиотеку функција које користе Ноде.јс токове за креирање компресованих архива датотека.

Пакет Арцхивер подразумевано подржава више формата архива, укључујући ЗИП, ГЗИП и ТАР. Пакет вам такође омогућава да креирате архиве од датотека и директоријума, и да поделите велике архиве на мање делове (вишетомне архиве). Такође вам омогућава да искључите или филтрирате датотеке током компресије.

Тхе Унзиппер пакет је веома ефикасан пакет за екстраховање ЗИП архива у Ноде.јс. Пакет обезбеђује АПИ једноставан за коришћење који омогућава програмерима да екстрахују ЗИП датотеке са само неколико линија кода.

Пакети Арцхивер и Унзиппер су избори за овај водич јер се неприметно интегришу са Ноде.јс фс модул, који обезбеђује глатку компатибилност и једноставност.

Како компримовати датотеке у ЗИП формат у Ноде.јс

Компресовање датотека у ЗИП формат у Ноде.јс је лако као и на било ком другом језику, захваљујући пакету Арцхивер. Да бисте креирали ЗИП архиве у Ноде.јс пратећи овај одељак, потребно вам је развојно окружење Ноде.јс подешено на вашем рачунару.

Направићете једноставну Ноде.јс скрипту за компримовање датотеке и фасцикле у ЗИП формат. Направите нови пројекат Ноде на свом рачунару тако што ћете покренути следеће команде:

мкдир ноде-зип-арцхивер
цд ноде-зип-арцхивер
нпм инит -и

Затим морате да инсталирате пакет Арцхивер у свој пројекат. Трцати нпм инсталл арцхивер --саве у свом терминалу да бисте га инсталирали. Када је инсталација пакета завршена, креирајте нову датотеку у директоријуму пројекта и назовите је према вашим жељама, нпр. апп.јс или арцхивер.јс.

Тхе фс модул управља операцијама датотека, док ће пакет Арцхивер управљати компресијом датотека и фасцикли у ЗИП архиве, стога скрипта захтева оба модула.

Креирање ЗИП архива из датотека

Следећи код је имплементација функције која прихвата датотеку као аргумент и креира компресовану ЗИП верзију датотеке.

конст арцхивер = захтевају('архивер')
конст фс = захтевају('фс')

// креирај ЗИП из датотеке
конст цреатеЗипФромФиле = (фајл) => {
конст филеПатх = __дирнаме + '/' + фајл
конст излаз = фс.цреатеВритеСтреам (путања до датотеке + '.зип')
конст арцхиве = арцхивер('зип', {
злиб: { ниво: 9 } // подешава ниво компресије на највиши
})

архива.цев (излаз);
арцхиве.филе (путања до датотеке, { име: датотека })
арцхиве.финализе()
}

Функција узима име датотеке за компримовање и генерише излазну датотеку са сличним именом (са једином разликом у додавању екстензије ЗИП датотеке).

Затим, функција генерише нову архиву са нивоом компресије постављеним на 9 (највиши) и користи цев функција за пренос излазних токова архиве у улаз излазне датотеке.

Тхе фајл функција додаје датотеку у архиву. Прихвата путању датотеке као параметар и опционо Опције параметар где можете одредити својства датотеке у архиви.

Тхе име опција означава име датотеке у архиви. Ако опција није наведена приликом додавања датотеке у архиву, Арцхивер поставља датотеку у архиву на основу њене оригиналне путање, чувајући структуру директоријума.

Међутим, када је то експлицитно наведено, Арцхивер додаје датотеку у архиву без њене оригиналне путање, омогућавајући прилагођено именовање и организацију унутар архиве.

Креирање ЗИП архива из фасцикли

Процес креирања ЗИП архива из фасцикли се не разликује много од оног за датотеке. Главна разлика је употреба пакета Арцхивер именик функција за разлику од фајл у претходној функцији.

Испод је имплементација функције за компримовање фасцикле у ЗИП архиву.

// креирај ЗИП из фасцикле
конст цреатеЗипФромФолдер = (фолдер) => {
конст фолдерПатх = __дирнаме + '/' + фолдер
конст оутпут = фс.цреатеВритеСтреам (фолдерПатх + '.зип')

конст арцхиве = арцхивер('зип', {
злиб: { ниво: 9 } // подешава ниво компресије на највиши
})

арцхиве.пипе (излаз)
арцхиве.дирецтори (фолдерПатх, лажно)
арцхиве.финализе()
}

Тхе именик функција узима путању фасцикле као свој први аргумент и заставицу као други аргумент. Ознака одређује положај фасцикле унутар архиве.

Када је застава постављена на лажно, резултујућа архива ће садржати само садржај фасцикле, искључујући саму фасциклу. Али ако је застава постављена на истина, Архивер ће укључити саму фасциклу у генерисану архиву

Ако желите да избегнете контаминацију локације на којој извлачите своју архиву датотекама из компримоване архиве, требало би да размислите о подешавању застава опција да истина. Међутим, можете га поставити на лажно, ако боље одговара вашим сврхама.

Како декомпримирати датотеке у Ноде.јс

Процес издвајања ЗИП датотека у Ноде.јс има више приступа и неколико библиотека је доступно за употребу, али у овом чланку се користи пакет Унзиппер.

Покрените следећу команду у свом терминалу да бисте инсталирали пакет Унзиппер у свој пројекат.

нпм инсталл унзиппер --саве

Након инсталирања пакета, увезите га у свој код и имплементирајте функцију екстракције ЗИП-а приказану у коду испод:

конст унзиппер = захтевају("откључавање рајсфершлуса")

//функција за издвајање ЗИП датотеке
конст екстрактЗип = асинц (фајл) => {
конст филеПатх = __дирнаме + '/' + фајл
конст излазна путања = __дирнаме + '/извучено'
чекати фс.цреатеРеадСтреам (путања до датотеке)
.цев (откључавање. Издвоји ({ пут: Излазна путања }))
.промисе()
}

Тхе ектрацтЗип функција је асинхрона функција која креира ток за читање за читање садржаја ЗИП датотеке и издваја датотеку на наведену излазну путању (креира извучени фолдер ако не постоји).

У случају декомпресије или екстракције, нема потребе да дефинишете различите функције за датотеке и фасцикле, јер је ЗИП архива датотека без обзира на садржај у њој.

Испод је функција коју можете додати апликацији, да бисте тестирали функције које сте до сада креирали:

(асинцфункција () {
конст филе = 'тест.пдф'
конст фолдер = 'тест_фолдер'
конст зипФиле = 'тест.пдф.зип'
цреатеЗипФромФиле (фајл)
конзола.Пријава(„ЗИП архива је успешно направљена из датотеке“)
цреатеЗипФромФолдер (фасцикла)
конзола.Пријава(„ЗИП архива је успешно креирана из фасцикле“)
чекати екстрактЗип (зипФиле)
конзола.Пријава('ЗИП архива је успешно извучена')
}) ()

Све претходне функције су ЈаваСцрипт функције стрелице, али је горња функција другачија јер је ан Израз функције који се одмах позива то инкапсулира код унутар њега и одмах га извршава.

Компресија датотека је корисна у изградњи ефикасних апликација

Увек треба да буде циљ да ваше апликације буду што ефикасније како би боље служиле корисницима и одржавале пријатно корисничко искуство.

У сценаријима у којима морате да пренесете много датотека унутар ваше апликације, размислите о компримовању и декомпресији датотека током преноса. Већина савремених програмских језика пружа подршку за ефикасно компримовање и декомпресију датотека.