In diesem Artikel werden die Dateikomprimierung und Dekompression in Java untersucht und sich auf die DeflateroutputStream
und InflaterInputStream
Klassen für Deflat -Komprimierung konzentrieren. Diese Klassen bieten effiziente Möglichkeiten, komprimierte Daten zu verarbeiten.
Kernkonzepte:
java bietet integrierte Unterstützung für die Komprimierung und Dekomprimierung von Dateien mit dem Paket java.util.zip
. DeflateroutputStream
komprimiert Daten in das Deflate -Format (oft in ZIP -Archiven verwendet), während InflaterInputStream
Daten im selben Format dekomprimiert.
. Beispiel: Komprimieren einer Datei in ZIP
Dieses Beispiel zeigt, wie eine Datei in ein ZIP -Archiv komprimiert wird:
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);
}
Algorithmus für die Dateikomprimierung/Dekompression:
Ein allgemeiner Algorithmus für die Dateikomprimierung und Dekompression in Java beinhaltet die folgenden Schritte:
create
FileOutputStream und
DeflateroutputStream , um komprimierte Daten zu schreiben. Lesen Sie Daten aus der Quelldatei mit
FileInputStream , schreiben Sie an
DeflateroutputStream create
FileInputStream und
InflaterInputStream zum Lesen und Dekomprimieren von Daten. Schreiben Sie dekomprimierte Daten in eine Zieldatei mit
FileOutputStream implementieren Sie eine robuste Fehlerbehandlung (z. B.
try-catch Blöcke), um potential
ioExceptions .
vereinfachte Syntax Beispiele:
Während vollständiger, erfordern robuste Beispiele mehr Fehlerbehandlung und Dateipfadverwaltung, veranschaulichen vereinfachte Syntax -Snippets die Kernvorgänge:
Kompression:FileInputStream inputStream = new FileInputStream(inputPath);
FileOutputStream outputStream = new FileOutputStream(outputPath);
DeflaterOutputStream compressor = new DeflaterOutputStream(outputStream);
// ... write data from inputStream to compressor ...
compressor.close();
FileInputStream InputStream = new FileInputStream (inputPath);
FileOutputStream OutputStream = new FileOutputStream (OutputPath);
DeflateroutputStream Compressor = new DeflateroutputStream (Ausgangsstream);
// ... Daten von InputStream in den Kompressor schreiben ...
compressor.close (); Dekompression:
FileInputStream inputStream = new FileInputStream(inputPath);
FileOutputStream outputStream = new FileOutputStream(outputPath);
DeflaterOutputStream compressor = new DeflaterOutputStream(outputStream);
// ... write data from inputStream to compressor ...
compressor.close();
FileInputStream InputStream = new FileInputStream (inputPath);
FileOutputStream OutputStream = new FileOutputStream (OutputPath);
InflaterInputStream Decompressor = neuer InflaterInputStream (InputStream);
// ... Schreiben Sie Daten vom Dekompressor auf OutputStream ...
decompressor.close (); Ansätze:
Es gibt zwei Hauptansätze: Komprimieren/Dekomprimieren einzelner Dateien und Handhabung mehrerer Dateien oder Verzeichnisse. Die früher im Originaltext angegebenen Beispiele zeigen eine Einzelfilmkomprimierung mit zipoutputstream
und ein komplexeres Beispiel für mehrere Dateien. Umgang mit Verzeichnissen erfordert eine rekursive Verarbeitung, um die Verzeichnisstruktur zu durchqueren. Beachten Sie, dass den Original -Code -Beispielen keine ordnungsgemäße Handhabung und Fehlerbehandlung für Dateipfad und Fehler hatten, was zu
führte. Stellen Sie immer eine robuste Fehlerbehandlung sicher und geben Sie die korrekten Dateipfade in Ihrem Code an. .
Abschluss:
Java bietet leistungsstarke Tools für die Dateikomprimierung und Dekompression. Verständnis DeflateroutputStream
und
sowie die ordnungsgemäße Fehlerbehandlung und das Dateipfadmanagement sind entscheidend für die Erstellung zuverlässiger und effizienter Komprimierungsdienstprogramme. Denken Sie daran, immer potenzielle Ausnahmen zu behandeln und dem Benutzer entsprechende Fehlermeldungen anzugeben. .
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3