찾다
웹 프론트엔드JS 튜토리얼Node의 zip 압축 및 zip 압축 해제에 대한 간략한 분석(코드 포함)

이전 기사 "Amazon EC2 호스트 https(코드 공유)를 활성화하기 위해 certbot에 대해 알아야 할 사항 "에서 Amazon EC2 호스트 https를 활성화하기 위한 certbot에 대해 알아보았습니다. 다음 글에서는 Node.js에서 zip 압축과 zip 압축 해제 방법을 소개합니다.

Node의 zip 압축 및 zip 압축 해제에 대한 간략한 분석(코드 포함)

NodeJS파일(폴더) 압축/압축 해제 방식(zip/unzip)-<code>zip Linux의 관련 명령NodeJS文件(夹)压缩/解压方案(zip/unzip)-Linuxzip相关命令

Use adm-zip

adm-zip支持archiveunarchive一个或多个文件或者整个文件夹的功能,使用非常的简单方便。

var adm_zip = require("adm-zip");

//creating archives
var zip = new adm_zip();
zip.addLocalFolder("./dist");
zip.writeZip("./dist.zip");

//extracting archives
var unzip = new adm_zip("dist.zip");
unzip.extractAllTo("./dist", /*overwrite*/ true);

更多 apihttps://github.com/cthackers/adm-zip

Use JSZip

这个库在使用的时候需要把文件一个个增加到zip对象中,而且需要把内容也手动添加,再使用写文件操作把内存中的zip对象转成物理存储。所以如果是对于一整个文件夹来说,就很麻烦,需要遍历文件夹

var JSZip = require("jszip");
var fs = require("fs");

var zip = new JSZip();

var file_content = fs.readFileSync("archive/a.txt");

zip.file("a.txt", file_content);

var data = fs.readFileSync("archive/img/pic.jpeg");
zip.file("img/pic.jpeg", data, { base64: true });

var zipfolder = zip.generate({ type: "nodebuffer" });

fs.writeFile("jszip.zip", zipfolder, function (err) {
  if (err) throw err;
});

JSZip里面也有个folder方法,但它只是用来切换zip对象内部的虚拟路径,比如zip.folder("img").file('a.txt')就是在zip中添加一个img子目录,在下面创建a.txt,效果等同于zip.file("img/a.txt")。这里还需要注意的是,文件的内容都需要手动添加,如果仅仅是zip.file("a.txt");只是在zip对象中创建了内容为空的txt文件,而且它只是存在于内存中,需要写文件操作后才会真正存到磁盘。

更多 APIhttps://github.com/Stuk/jszip

Use archiver and unzip

archiver很强大,支持zip格式tar格式,只需要提供路径就可以压缩已存在的文件夹。

压缩:

// require modules
var fs = require("fs");
var archiver = require("archiver");

// create a file to stream archive data to.
var output = fs.createWriteStream(__dirname + "/example.zip");
var archive = archiver("zip", {
  zlib: { level: 9 }, // Sets the compression level.
});

// pipe archive data to the file
archive.pipe(output);

// append a file from stream
var file1 = __dirname + "/file1.txt";
archive.append(fs.createReadStream(file1), { name: "file1.txt" });

// append a file from string
archive.append("string cheese!", { name: "file2.txt" });

// append a file from buffer
var buffer3 = Buffer.from("buff it!");
archive.append(buffer3, { name: "file3.txt" });

// append a file
archive.file("file1.txt", { name: "file4.txt" });

// append files from a sub-directory and naming it `new-subdir` within the archive
archive.directory("subdir/", "new-subdir");

// append files from a sub-directory, putting its contents at the root of archive
archive.directory("subdir/", false);

// append files from a glob pattern
archive.glob("subdir/*.txt");

// finalize the archive (ie we are done appending files but streams have to finish yet)
// &#39;close&#39;, &#39;end&#39; or &#39;finish&#39; may be fired right after calling this method so register to them beforehand
archive.finalize();

解压

var fs = require("fs");
var unzip = require("unzip");

fs.createReadStream("archiver-unzip.zip").pipe(
  unzip.Extract({ path: "unarchive" })
);

更多APIhttps://github.com/archiverjs/node-archiver

Linux上zip/unzip命令

apt-get install zip unzip

解压缩zip文件

语  法:unzip [-cflptuvz][-agcjlmnoqsvx][-P ][.zip文件][文件][-d ][-x ] 或 unzip [-Z]

补充说明:unzip为.zip压缩文件的解压缩程序。

参  数:

-c将解压缩的结果显示到屏幕上,并对字符做适当的转换。

-f更新现有的文件。

-l显示压缩文件内所包含的文件。

-p-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。

-t检查压缩文件是否正确。

-u-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。

-v执行是时显示详细的信息。

-z仅显示压缩文件的备注文字。

-a对文本文件进行必要的字符转换。

-b不要对文本文件进行字符转换。

-C压缩文件中的文件名称区分大小写。

-j不处理压缩文件中原有的目录路径。

-L将压缩文件中的全部文件名改为小写。

-M将输出结果送到more程序处理。

-n解压缩时不要覆盖原有的文件。

-o不必先询问用户,unzip执行后覆盖原有文件。

-P 使用zip的密码选项。

-q执行时不显示任何信息。

-s将文件名中的空白字符转换为底线字符。

-V保留VMS的文件版本信息。

-X解压缩时同时回存文件原来的UID/GID

[.zip 文件]指定.zip压缩文件。

[文件]指定要处理.zip压缩文件中的哪些文件。

-d指定文件解压缩后所要存储的目录。

-x指定不要处理.zip压缩文件中的哪些文件。

-Z unzip-Z等于执行zipinfo指令。

基本用法是:zip [参数][打包后的文件名] [打包的目录路径]

参数:

-a将文件转成 ASCII 模式

-F尝试修复损坏的压缩文件

-h显示帮助界面

-m

adm-zip 사용

adm-zip은 하나 이상의 파일 또는 전체 폴더에 대해 보관보관 취소 기능을 지원합니다. .사용이 매우 간단하고 편리합니다. 🎜
zip -r test.zip abc.txt dir1
#解压缩:
```sh
unzip test.zip
🎜🎜더 보기 api https://github.com/cthackers/adm-zip🎜🎜

JSZip 사용

🎜이 라이브러리를 사용할 때 zip 객체이며, 콘텐츠를 수동으로 추가해야 하며, 파일 쓰기 작업을 사용하여 메모리에 있는 <code>zip 객체를 물리적 저장소로 변환합니다. 그래서 폴더 전체에 대한 것이라면 매우 번거롭습니다. 폴더를 순회해야 합니다🎜
unzip abc\?.zip
🎜JSZip에도 folder 방법이 있지만, 스위치 zip.folder("img").file('a.txt')와 같은 code>zip 객체 내부의 가상 경로는 zip <code>img 하위 디렉터리, 아래에 a.txt 생성, 효과는 zip.file("img/a.txt")와 동일 >. 또한 파일 내용을 수동으로 추가해야 한다는 점에 유의해야 합니다. zip.file("a.txt")인 경우 zip으로 생성됩니다. 객체 콘텐츠는 빈 txt 파일이며 메모리에만 존재하며 실제로 디스크에 저장되기 전에 파일에 기록되어야 합니다. 🎜🎜🎜추가 API https://github.com/Stuk/jszip🎜🎜🎜아카이버 사용 및 압축 해제🎜🎜archiver는 매우 강력하며 zip 형식 을 지원합니다. tar 형식의 경우 기존 폴더를 압축하기 위한 경로만 제공하면 됩니다. 🎜🎜압축: 🎜
unzip -v test.zip
🎜Decompression🎜
unzip -t test.zip
🎜🎜더 많은 API https://github.com/archiverjs/node-archiver🎜🎜

Linux의 zip/unzip 명령

unzip -j music.zip
🎜Unzipzip File🎜🎜🎜 구문: unzip [-cflptuvz][-agcjlmnoqsvx][-P <password>][.zip 파일][file][-d <directory>][-x 또는 unzip [-Z]🎜🎜🎜추가 설명: <code>unzip은 .zip 압축 파일의 압축 해제 프로그램입니다. 🎜🎜매개변수: 🎜🎜-c는 압축 해제 결과를 화면에 표시하고 문자를 적절하게 변환합니다. 🎜🎜-f기존 파일을 업데이트합니다. 🎜🎜-l압축 파일에 포함된 파일을 표시합니다. 🎜🎜-p-c 매개변수와 유사하지만 압축 해제 결과를 화면에 표시하지만 변환을 수행하지는 않습니다. 🎜🎜-t 압축파일이 맞는지 확인해보세요. 🎜🎜-u-f 매개변수와 유사하지만 기존 파일을 업데이트하는 것 외에도 압축 파일의 다른 파일도 디렉터리에 압축 해제됩니다. 🎜🎜-v를 실행하면 자세한 정보가 표시됩니다. 🎜🎜-z압축 파일의 주석 텍스트만 표시합니다. 🎜🎜-a 텍스트 파일에서 필요한 문자 변환을 수행합니다. 🎜🎜-b텍스트 파일에서는 문자 변환을 수행하지 않습니다. 🎜🎜-C압축 파일의 파일 이름은 대소문자를 구분합니다. 🎜🎜-j는 압축 파일의 원래 디렉터리 경로를 처리하지 않습니다. 🎜🎜-L 압축 파일의 모든 파일 이름을 소문자로 변경합니다. 🎜🎜-M은 처리를 위해 출력 결과를 more 프로그램으로 보냅니다. 🎜🎜-n압축 해제 시 원본 파일을 덮어쓰지 마세요. 🎜🎜-o사용자에게 먼저 물어볼 필요가 없습니다. unzip은 실행 후 원본 파일을 덮어씁니다. 🎜🎜-P zip의 비밀번호 옵션을 사용하세요. 🎜🎜-q를 실행하면 어떤 정보도 표시되지 않습니다. 🎜🎜-s파일 이름의 공백 문자를 밑줄 문자로 변환합니다. 🎜🎜-VVMS의 파일 버전 정보를 유지합니다. 🎜🎜-X는 압축을 풀 때 파일의 원본 UID/GID도 저장합니다. 🎜🎜[.zip 파일].zip 압축 파일을 지정합니다. 🎜🎜[file].zip 압축 파일에서 처리할 파일을 지정합니다. 🎜🎜-d<directory></directory>압축 해제 후 파일이 저장될 디렉터리를 지정합니다. 🎜🎜-x<file></file>.zip 압축 파일에서 처리하지 말아야 할 파일을 지정합니다. 🎜🎜-Z unzip-Zzipinfo 명령을 실행하는 것과 동일합니다. 🎜🎜🎜기본 사용법은 다음과 같습니다: zip [매개변수][패킹된 파일 이름] [패킹된 디렉터리 경로]🎜🎜🎜매개변수: 🎜🎜-a파일을 ASCII 모드로 변환🎜🎜- F손상된 압축 파일 복구를 시도해보세요🎜🎜-h도움말 인터페이스 표시🎜🎜-m파일 압축 후 소스 파일 삭제🎜

-n特定字符串 不压缩具有特定字尾字符串的文件

-o将压缩文件内的所有文件的最新变动时间设为压缩时候的时间

-q安静模式,在压缩的时候不显示指令的执行过程

-r将指定的目录下的所有子目录以及文件一起处理

-S包含系统文件和隐含文件(S 是大写)

范 例:

zip命令可以用来将文件压缩成为常用的zip格式。unzip命令则用来解压缩zip文件。 压缩文件abc.txt和一个目录dir1,名字test.zip

zip -r test.zip abc.txt dir1
#解压缩:
```sh
unzip test.zip

目录下有abc1.zipabc2.zipabc3.zip,使用通配符

unzip abc\?.zip

注释:?表示一个字符,如果用*表示任意多个字符。 不解压,只查看内容

unzip -v test.zip

验证zip文件完成性,查看网上下的包包是不是已经下载完了

unzip -t test.zip

我用-v选项发现music.zip压缩文件里面有很多目录和子目录,并且子目录中其实都是歌曲mp3文件,我想把这些文件都下载到第一级目录,而不是一层一层建目录:

unzip -j music.zip

推荐学习:JS视频教程

위 내용은 Node의 zip 압축 및 zip 압축 해제에 대한 간략한 분석(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 禅境花园에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Python vs. JavaScript : 개발 환경 및 도구Python vs. JavaScript : 개발 환경 및 도구Apr 26, 2025 am 12:09 AM

개발 환경에서 Python과 JavaScript의 선택이 모두 중요합니다. 1) Python의 개발 환경에는 Pycharm, Jupyternotebook 및 Anaconda가 포함되어 있으며 데이터 과학 및 빠른 프로토 타이핑에 적합합니다. 2) JavaScript의 개발 환경에는 Node.js, VScode 및 Webpack이 포함되어 있으며 프론트 엔드 및 백엔드 개발에 적합합니다. 프로젝트 요구에 따라 올바른 도구를 선택하면 개발 효율성과 프로젝트 성공률이 향상 될 수 있습니다.

JavaScript가 C로 작성 되었습니까? 증거를 검토합니다JavaScript가 C로 작성 되었습니까? 증거를 검토합니다Apr 25, 2025 am 12:15 AM

예, JavaScript의 엔진 코어는 C로 작성되었습니다. 1) C 언어는 효율적인 성능과 기본 제어를 제공하며, 이는 JavaScript 엔진 개발에 적합합니다. 2) V8 엔진을 예를 들어, 핵심은 C로 작성되며 C의 효율성 및 객체 지향적 특성을 결합하여 C로 작성됩니다.

JavaScript의 역할 : 웹 대화식 및 역동적 인 웹JavaScript의 역할 : 웹 대화식 및 역동적 인 웹Apr 24, 2025 am 12:12 AM

JavaScript는 웹 페이지의 상호 작용과 역학을 향상시키기 때문에 현대 웹 사이트의 핵심입니다. 1) 페이지를 새로 고치지 않고 콘텐츠를 변경할 수 있습니다. 2) Domapi를 통해 웹 페이지 조작, 3) 애니메이션 및 드래그 앤 드롭과 같은 복잡한 대화식 효과를 지원합니다. 4) 성능 및 모범 사례를 최적화하여 사용자 경험을 향상시킵니다.

C 및 JavaScript : 연결이 설명되었습니다C 및 JavaScript : 연결이 설명되었습니다Apr 23, 2025 am 12:07 AM

C 및 JavaScript는 WebAssembly를 통한 상호 운용성을 달성합니다. 1) C 코드는 WebAssembly 모듈로 컴파일되어 컴퓨팅 전력을 향상시키기 위해 JavaScript 환경에 도입됩니다. 2) 게임 개발에서 C는 물리 엔진 및 그래픽 렌더링을 처리하며 JavaScript는 게임 로직 및 사용자 인터페이스를 담당합니다.

웹 사이트에서 앱으로 : 다양한 JavaScript 애플리케이션웹 사이트에서 앱으로 : 다양한 JavaScript 애플리케이션Apr 22, 2025 am 12:02 AM

JavaScript는 웹 사이트, 모바일 응용 프로그램, 데스크탑 응용 프로그램 및 서버 측 프로그래밍에서 널리 사용됩니다. 1) 웹 사이트 개발에서 JavaScript는 HTML 및 CSS와 함께 DOM을 운영하여 동적 효과를 달성하고 jQuery 및 React와 같은 프레임 워크를 지원합니다. 2) 반응 및 이온 성을 통해 JavaScript는 크로스 플랫폼 모바일 애플리케이션을 개발하는 데 사용됩니다. 3) 전자 프레임 워크를 사용하면 JavaScript가 데스크탑 애플리케이션을 구축 할 수 있습니다. 4) node.js는 JavaScript가 서버 측에서 실행되도록하고 동시 요청이 높은 높은 요청을 지원합니다.

Python vs. JavaScript : 사용 사례 및 응용 프로그램 비교Python vs. JavaScript : 사용 사례 및 응용 프로그램 비교Apr 21, 2025 am 12:01 AM

Python은 데이터 과학 및 자동화에 더 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 더 적합합니다. 1. Python은 데이터 처리 및 모델링을 위해 Numpy 및 Pandas와 같은 라이브러리를 사용하여 데이터 과학 및 기계 학습에서 잘 수행됩니다. 2. 파이썬은 간결하고 자동화 및 스크립팅이 효율적입니다. 3. JavaScript는 프론트 엔드 개발에 없어서는 안될 것이며 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축하는 데 사용됩니다. 4. JavaScript는 Node.js를 통해 백엔드 개발에 역할을하며 전체 스택 개발을 지원합니다.

JavaScript 통역사 및 컴파일러에서 C/C의 역할JavaScript 통역사 및 컴파일러에서 C/C의 역할Apr 20, 2025 am 12:01 AM

C와 C는 주로 통역사와 JIT 컴파일러를 구현하는 데 사용되는 JavaScript 엔진에서 중요한 역할을합니다. 1) C는 JavaScript 소스 코드를 구문 분석하고 추상 구문 트리를 생성하는 데 사용됩니다. 2) C는 바이트 코드 생성 및 실행을 담당합니다. 3) C는 JIT 컴파일러를 구현하고 런타임에 핫스팟 코드를 최적화하고 컴파일하며 JavaScript의 실행 효율을 크게 향상시킵니다.

자바 스크립트 행동 : 실제 예제 및 프로젝트자바 스크립트 행동 : 실제 예제 및 프로젝트Apr 19, 2025 am 12:13 AM

실제 세계에서 JavaScript의 응용 프로그램에는 프론트 엔드 및 백엔드 개발이 포함됩니다. 1) DOM 운영 및 이벤트 처리와 관련된 TODO 목록 응용 프로그램을 구축하여 프론트 엔드 애플리케이션을 표시합니다. 2) Node.js를 통해 RESTFULAPI를 구축하고 Express를 통해 백엔드 응용 프로그램을 시연하십시오.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기