「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Javaのファイルの圧縮と減圧

Javaのファイルの圧縮と減圧

2025-03-24に投稿されました
ブラウズ:136

Compressing and Decompressing files in Java

この記事では、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のファイル圧縮と減圧のための一般的なアルゴリズムには、次の手順が含まれます。

    初期化:
  1. 必要なクラスをインポートし、ファイルパスを定義します。
  2. Compression:
  3. create fileoutputStream および deflateroutputStream を作成します。 fileInputStream を使用してソースファイルからデータを読み取り、 deflateroutputStream に書き込み、close streams。 減圧:
  4. fileinputStream
  5. および inflaterinputStream を作成します。 [fileoutputStream 、およびclose streamsを使用して、宛先ファイルに解凍データを書き込みます。 エラー処理:堅牢なエラー処理( try-catch
  6. blocks)を実装して、潜在的な
  7. ioexceptions 単純化された構文の例:
  8. 完全で堅牢な例は、より多くのエラー処理とファイルパス管理が必要です。単純化された構文スニペットはコア操作を示しています:

圧縮:

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