この記事では、Javaでのファイル圧縮と減圧を調査し、 deflateroutputStream
および inflaterinputStream
クラスに焦点を当てています。 これらのクラスは、圧縮データを処理する効率的な方法を提供します。
コアコンセプト:
Javaは、 java.util.zip
パッケージを使用してファイルを圧縮および解凍するための組み込みサポートを提供します。 deflateroutputStream
はデータをDEFLATE形式(ZIPアーカイブ内でよく使用)に圧縮し、 InfaterinputStream
は同じ形式でデータを圧縮します。
例:ファイルをzip に圧縮する
この例は、ファイルを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);
}
ファイル圧縮/減圧のアルゴリズム:
Javaのファイル圧縮と減圧のための一般的なアルゴリズムには、次の手順が含まれます。
deflateroutputStream
を作成します。 fileInputStream
を使用してソースファイルからデータを読み取り、 deflateroutputStream
に書き込み、close streams。
減圧:、およびclose streamsを使用して、宛先ファイルに解凍データを書き込みます。
エラー処理:堅牢なエラー処理(
try-catch
単純化された構文の例:
圧縮:
fileInputStream inputstream = new fileInputStream(inputPath); fileoutputStream outputStream = new FileOutputStream(outputPath); deflateroutputStreamコンプレッサー= new DeflaterOutputStream(outputStream); // ... inputstreamからコンプレッサーへのデータを書きます... compressor.close();
減圧:
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 = new InflaterInputStream(inputStream);
// ... decompressorからoutputStreamにデータを書きます...
decompressor.close(); アプローチ:
FileInputStream inputStream = new FileInputStream(inputPath);
FileOutputStream outputStream = new FileOutputStream(outputPath);
InflaterInputStream decompressor = new InflaterInputStream(inputStream);
// ... write data from decompressor to outputStream ...
decompressor.close();
zipoutputStream を使用して単一ファイル圧縮を示し、複数のファイルのより複雑な例を示しています。 ディレクトリの処理には、ディレクトリ構造を横断するために再帰処理が必要です。 元のコードの例には、適切なファイルパスの処理とエラー管理がなく、 filenotfoundexception につながることに注意してください。 堅牢なエラー処理を常に確認し、コード内の正しいファイルパスを指定してください。
結論:
Javaは、ファイルの圧縮と減圧のための強力なツールを提供します。
deflateroutputStream and inflaterinputStream
とともに、適切なエラー処理とファイルパス管理が信頼性の高い効率的な圧縮ユーティリティを作成するために重要です。 潜在的な例外を常に処理し、ユーザーに適切なエラーメッセージを提供することを忘れないでください。免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3