Class: ZipFile

@nginstack/engine/lib/compress/ZipFile~ ZipFile


new ZipFile()

ZipFile representa um arquivo no formato Zip, localizado no sistema de arquivos do sistema operacional. Todas as funções aceitam apenas caminhos absolutos de arquivos e diretórios.

Examples
// Cria um arquivo Zip utilizando o algoritmo padrão de compressão Deflate
const ZipFile = require('@nginstack/engine/lib/compress/ZipFile.js');

const zip = new ZipFile();
zip.open(zipFileName, 'create');
zip.write(fileToCompress);
zip.close();
// Cria um arquivo Zip utilizando o algoritmo de compressão Zstd no nível 9 de compressão.
const ZipFile = require('@nginstack/engine/lib/compress/ZipFile.js');

const zip = new ZipFile();
zip.open(zipFileName, 'create', { method: 'zstd', level: 9 });
zip.write(fileToCompress);
zip.close();
// Criando um arquivo Zip protegido por criptografia AES-256 utilizando uma senha
const ZipFile = require('@nginstack/engine/lib/compress/ZipFile.js');

const zip = new ZipFile();
zip.open(zipFileName, 'create', { password: 'my-password' });
zip.write(fileToCompress);
zip.close();
// Criando um arquivo Zip com criptografia ZipCrypto para compatibilidade com o extrator do
// Windows (use apenas senhas ASCII para máxima compatibilidade)

const ZipFile = require('@nginstack/engine/lib/compress/ZipFile.js');

const zip = new ZipFile();
zip.open(zipFileName, 'create', { password: 'my-password', encryption: 'zipcrypto' });
zip.write(fileToCompress);
zip.close();
// Extrai um arquivo Zip protegido por senha
const ZipFile = require('@nginstack/engine/lib/compress/ZipFile.js');

const zip = new ZipFile();
zip.open(zipFileName, 'unzip', { password: 'my-password' });
zip.extractAll(destinationDir);
zip.close();

Methods


close()

Fecha o arquivo zip.


extract(path, pathToExtract)

Extrai um arquivo do arquivo zip. Se deseja-se extrair um arquivo de nome "file" que se encontra dentro da pasta de nome "folder" para a pasta "C:\minhasImagens", deve-se fazer:

Parameters:
Name Type Description
path string

Caminho do arquivo a ser descompactado. O caminho passado deve ser o caminho relativo de dentro do arquivo zip.

pathToExtract string

Caminho da pasta de onde se deseja extrair o arquivo especificado.

Example
const ZipFile = require('@nginstack/engine/lib/compress/ZipFile.js');

const zip = new ZipFile();
zip.open(zipFileName, 'unzip');
zip.extract('folder/file', destinationDir);
zip.close();

extractAll(path)

Extrai todo o conteúdo de um arquivo zip.

Parameters:
Name Type Description
path string

Caminho da pasta de onde se deseja extrair o conteúdo do arquivo zip.


getFileNames()

Obtém os nomes de todos os arquivos dentro de um arquivo zip. O conteúdo da variável "nomes", após a execução do código abaixo, poderia ser, por exemplo, ["folder/file2", "file1"].

Returns:

Array com os nomes de todos os arquivos dentro do arquivo zip.

Type
Array.<string>
Example
const ZipFile = require('@nginstack/engine/lib/compress/ZipFile.js');

const zip = new ZipFile();
zip.open(zipFileName, 'unzip');
const names = zip.getFileNames();
zip.close();

open(path, mode [, options])

Abre ou cria um arquivo zip no caminho especificado.

Parameters:
Name Type Argument Description
path string

Caminho do sistema de arquivos do arquivo a ser aberto ou criado.

mode 'create' | 'zip' | 'unzip'

Modo em que o arquivo será aberto. Os valores aceitos são:

  • 'create': Um novo arquivo zip, no caminho especificado, é criado e o arquivo é aberto para compactação de arquivos. Nesse modo, se o arquivo já existe, ele é sobrescrito.
  • 'zip': O arquivo é aberto para compactação de arquivos.
  • 'unzip': O arquivo é aberto para a extração de arquivos ou leitura de informações.
options Object <optional>

Opções de compressão e criptografia.

Properties
Name Type Argument Description
method 'deflate' | 'bzip2' | 'zstd' <optional>

Método de compressão. Métodos suportados: 'deflate', 'bzip2' e 'zstd'. O valor padrão é 'deflate'.

level number <optional>

Nível de compressão representado por um número. Quanto mais alto o nível, maior a compressão. O intervalo de valores possíveis varia de acordo com o método de compressão utilizado:

  • deflate: 1 a 9. Valor padrão é 6.
  • bzip2: 1 a 9. Valor padrão é 6.
  • zstd: -7 a 22. Valor padrão é 3. O zero é mapeado para o valor padrão.
password string | Uint8Array | ArrayBuffer <optional>

Senha para criptografia. Pode ser uma string (codificada em UTF-8), um Uint8Array ou um ArrayBuffer com os bytes da senha. Quando informada nos modos 'create' e 'zip', todos os arquivos adicionados serão criptografados. No modo 'unzip', é utilizada para descriptografar os arquivos durante a extração. Importante: a codificação de senhas não é padronizada entre os diferentes softwares de compressão, sendo comum o uso da codificação windows-1252 (Latin-1) no Windows e em softwares mais antigos, e UTF-8 no Linux, MacOS e em softwares mais modernos. Para máxima compatibilidade, recomenda-se o uso de senhas ASCII, sem acentos ou caracteres especiais.

encryption 'aes256' | 'zipcrypto' <optional>

Modo de criptografia. São suportados os modos 'aes256' para AES-256 (modo padrão), ou 'zipcrypto' para a criptografia legada compatível com o extrator nativo do Windows. Atenção: o modo ZipCrypto é considerado inseguro e não é recomendado para proteger arquivos sensíveis.


write(paths)

Compacta arquivos e/ou pastas em um arquivo zip.

Parameters:
Name Type Description
paths string | Array.<string>

Caminhos dos arquivos ou pastas a serem compactados.

Example
const ZipFile = require('@nginstack/engine/lib/compress/ZipFile.js');

const zip = new ZipFile();
zip.open(zipFileName, 'create');
zip.write([fileToCompress, dirToCompress]);
zip.close();

writeString(string, fileName)

Compacta um arquivo, em um arquivo zip, cujo conteúdo é a string especificada.

Parameters:
Name Type Description
string string

String a ser incluída no arquivo que será compactado.

fileName string

Nome do arquivo que será compactado.