前提・実現したいこと
コマンドラインで入力されたファイルをzipファイルに圧縮したい。
そしてオリジナルと圧縮後のファイルの容量のそれぞれ調べ圧縮率を00.00%で表示したい。
発生している問題・エラーメッセージ
圧縮後のファイルの容量を取得できない。
Java
import java.util.zip.GZIPOutputStream;
import java.io.*;
public class GZip{
void run(String[] args) throws IOException{
for(String arg : args){
zip(arg);
}
}
void zip(String arg)throws IOException{
//file取得
File originalFile = new File(arg);
FileInputStream in = new FileInputStream(originalFile);
//output設定 String zipName = arg+ ".zip"; File zipFile = new File(zipName); GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(zipFile)); //データ書き込み int data; while ((data = in.read()) != -1) { out.write((byte) data); } //ファイル名: 00 bytes バイト数取得 long orizinalFileVolume = originalFile.length(); long zipFileVolume = zipFile.length(); long per = zipFileVolume / orizinalFileVolume * 100; //圧縮後のバイト数取得 %表示 System.out.printf("%s : %s bytes -> %s bytes ( %s %% )%n", arg,orizinalFileVolume, zipFileVolume, per); in.close(); out.close(); } public static void main(String[] args) throws IOException{ GZip zip = new GZip(); zip.run(args);
}
}
###出力
$ java GZip GZip.java
GZip.java : 1244 bytes -> 10 bytes ( 0 %)
補足情報
圧縮前に宣言された File zipFile の容量を計測しているのはではないかと思っています。
しかし、どうやって出力されたzipファイルの容量を測定したらいいのかわかりません。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/13 07:07