Cet article explore la compression et la décompression des fichiers en java, en se concentrant sur les classes deflaterOutStream
et flaterinputStream
pour dégonfler la compression. Ces classes offrent des moyens efficaces de gérer les données compressées.
concepts de base:
Java fournit une prise en charge intégrée pour la compression et la décompression des fichiers à l'aide du package java.util.zip
. DeflaterOutputStream
compresse les données dans le format Deflate (souvent utilisé dans les archives zip), tandis que flaterinputStream
décompres les données dans le même format.
Exemple: compression d'un fichier pour zip
Cet exemple montre comment comprimer un fichier dans une archive 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);
}
Algorithme pour la compression de fichiers / décompression:
Un algorithme général pour la compression et la décompression des fichiers en java implique ces étapes:
fileoutputStream
et DeflaterOutputStream
pour écrire des données compressées. Lire les données du fichier source à l'aide de fileInputStream
, écrivez sur deflateroutputStream
, et fermer les flux. fileInputStream
et flaterinputStream
pour lire et décompresser les données. Écrivez des données décompressées dans un fichier de destination à l'aide de fileoutputStream
, et fermer les flux. blocs Try-Catch
pour gérer le potentiel ioExceptions
. Exemples de syntaxe simplifiés:
Bien que les exemples terminés, robustes, nécessitent plus de gestion des erreurs et de gestion du chemin de fichier, des extraits de syntaxe simplifiés illustrent les opérations principales:
Compression:
FileInputStream inputStream = new FileInputStream(inputPath);
FileOutputStream outputStream = new FileOutputStream(outputPath);
DeflaterOutputStream compressor = new DeflaterOutputStream(outputStream);
// ... write data from inputStream to compressor ...
compressor.close();
Décompression:
FileInputStream inputStream = new FileInputStream(inputPath);
FileOutputStream outputStream = new FileOutputStream(outputPath);
InflaterInputStream decompressor = new InflaterInputStream(inputStream);
// ... write data from decompressor to outputStream ...
decompressor.close();
Approches:
Deux approches principales existent: compression / décompression de fichiers uniques et gestion de plusieurs fichiers ou répertoires. Les exemples fournis précédemment dans le texte d'origine démontrent une compression unique à l'aide de zipOutputStream
et un exemple plus complexe pour plusieurs fichiers. La gestion des répertoires nécessite un traitement récursif pour traverser la structure du répertoire. Notez que les exemples de code d'origine manquaient de gestion du chemin de fichier et de gestion des erreurs, conduisant à filenotfoundException
. Assurez-vous toujours une gestion robuste des erreurs et spécifiez les chemins de fichier corrects dans votre code.
Conclusion:
Java propose des outils puissants pour la compression et la décompression des fichiers. Comprendre DeflaterOutputStream
et flaterinputStream
ainsi que la gestion des erreurs et la gestion des chemins de fichier appropriés sont cruciaux pour créer des utilitaires de compression fiables et efficaces. N'oubliez pas de toujours gérer les exceptions potentielles et de fournir des messages d'erreur appropriés à l'utilisateur.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3