Este artigo explora a compactação e descompressão do arquivo em Java, concentrando -se no DeflateroutputStream
e inflaterinputStream
Classes para deflatar a compactação. Essas classes oferecem maneiras eficientes de lidar com dados compactados.
Core Concepts:
Java fornece suporte interno para compactar e descomprimir arquivos usando o java.util.zip
package. DeflateroutputStream
comprime dados no formato deflate (frequentemente usado nos arquivos do ZIP), enquanto inflaterInputStream
descompra os dados no mesmo formato.
Exemplo: Compressionando um arquivo para Zip
Este exemplo demonstra como comprimir um arquivo em um arquivo zip:
try {
File file = new File(filePath);
String zipFileName = file.getName() ".zip";
FileOutputStream fos = new FileOutputStream(zipFileName);
ZipOutputStream zos = new ZipOutputStream(fos);
zos.putNextEntry(new ZipEntry(file.getName()));
byte[] bytes = Files.readAllBytes(Paths.get(filePath));
zos.write(bytes, 0, bytes.length);
zos.closeEntry();
zos.close();
} catch (FileNotFoundException ex) {
System.err.format("File not found: %s%n", filePath);
} catch (IOException ex) {
System.err.println("I/O error: " ex);
}
algoritmo para compactação de arquivo/descompressão:
Um algoritmo geral para compactação de arquivo e descompressão em java envolve estas etapas:
FileOutputStream
e Deflateroututstream
para gravar dados compactados. Leia os dados do arquivo de origem usando FileInputStream
, escreva para DeflateroutputStream
e feche Streams. fileInputStream
e inflaterInputStream
para ler e descomprimir dados. Escreva dados descompactados em um arquivo de destino usando FileOutputStream
, e fechar streams. try-catch
blocks) para gerenciar potencial ioexceptions
. Exemplos de sintaxe simplificados:
, enquanto completos, exemplos robustos requerem mais manipulação de erros e gerenciamento do caminho do arquivo, snippets simplificados de sintaxe ilustram as operações principais:
Compressão:
FileInputStream inputStream = new FileInputStream(inputPath);
FileOutputStream outputStream = new FileOutputStream(outputPath);
DeflaterOutputStream compressor = new DeflaterOutputStream(outputStream);
// ... write data from inputStream to compressor ...
compressor.close();
descompressão:
FileInputStream inputStream = new FileInputStream(inputPath);
FileOutputStream outputStream = new FileOutputStream(outputPath);
InflaterInputStream decompressor = new InflaterInputStream(inputStream);
// ... write data from decompressor to outputStream ...
decompressor.close();
abordagens:
existem duas abordagens principais: Compressa/descompactando arquivos únicos e manuseio de vários arquivos ou diretórios. Os exemplos fornecidos anteriormente no texto original demonstram compactação de arquivo único usando zipOutputStream
e um exemplo mais complexo para vários arquivos. Os diretórios de manuseio requer processamento recursivo para atravessar a estrutura do diretório. Observe que os exemplos de código original não tinham manipulação adequada do caminho do arquivo e gerenciamento de erros, levando a filenotfoundException
. Sempre garanta o manuseio robusto de erro e especifique os caminhos de arquivo corretos em seu código.
Conclusão:
Java oferece ferramentas poderosas para compactação de arquivo e descompressão. Compreendendo deflateroutputStream
e inflaterInputStream
, juntamente com o manuseio de erro adequado e o gerenciamento do caminho do arquivo, é crucial para criar utilitários de compressão confiáveis e eficientes. Lembre -se de sempre lidar com possíveis exceções e fornecer mensagens de erro apropriadas ao usuário.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3