Java APIを介したzip圧縮形式の圧縮と減圧の実装
コードコピーは次のとおりです。
パッケージcom.hongyuan.test;
java.io.fileをインポートします。
java.io.fileinputStreamをインポートします。
java.io.fileoutputStreamをインポートします。
java.io.ioexceptionをインポートします。
java.io.inputStreamをインポートします。
java.io.outputStreamをインポートします。
java.util.numerationをインポートします。
java.util.zip.zipentryをインポートします。
java.util.zip.zipfileをインポートします。
java.util.zip.zipoutputStreamをインポートします。
パブリッククラスziptest {
public static void main(string [] args)throws ioexception {
unzip( "bootstrap.zip");
zip( "bootstrap_01.zip"、 "bootstrap/css/bootstrap.css"、 "bootstrap/css/bootstrap.min.css");
}
public static void unzip(string filename)IoException {
//圧縮されたファイルオブジェクトを取得します
zipfile zf = new zipfile(filename);
//ファイルエントリを転送します
列挙<?
while(items.hasmoreElements()){
zipentry item = items.NextElement();
string filepath = zf.getName()。サブストリング(0、
zf.getname()。lastindexof( "。"))
+ file.separator + item.getName();
file filedir = new file(filepath.substring(0、
filepath.lastindexof( "/"));
if(!filedir.exists()){
filedir.mkdirs();
}
//ストリームからファイルを読み取ります
outputStream out = new fileoutputStream(filepath);
inputStream in = zf.getInputStream(item);
byte [] temp = new byte [1024];
int len = 0;
while((len = in.read(temp))> 0){
out.write(temp、0、len);
}
in.close();
out.close();
}
zf.close();
}
public static void zip(string filename、string ... files)throws ioexception {
//圧縮されたファイル出力ストリームを作成します
zipoutputStream zos = new zipoutputStream(new fileoutputStream(filename));
for(int i = 0、size = files.length; i <size; i ++){
//圧縮エンティティを作成します
zipentry entry = new Zipentry(files [i] .substring(files [i] .lastindexof( "/")+1));
zos.putnextentry(entry);
//ファイルの内容を圧縮ストリームに出力します
inputstream is = new fileinputStream(files [i]);
int count = 0;
byte [] buffer = new byte [1024];
while((count = is.read(buffer))> = 0){
zos.write(buffer、0、count);
}
zos.flush();
Zos.CloseEntry();
is.close();
}
}
}