java.util.zip_[Java 基础] 使用java.util.zip包压缩和解压缩文件
Java API中的import java.util.zip.*;包下包含了Java對于壓縮文件的所有相關操作。
我們可以使用該包中的方法,結合IO中的相關知識,進行文件的壓縮和解壓縮相關操作。
ZipFile
java中的每一個壓縮文件都是可以使用ZipFile來進行表示的。
File file = new File("F:/zippath.zip");
ZipFile zipFile= newZipFile(file);
System.out.println("壓縮文件的名稱為:" + zipFile.getName());
壓縮單個文件
/**壓縮單個文件*/
public static voidZipFile(String filepath ,String zippath) {try{
File file= newFile(filepath);
File zipFile= newFile(zippath);
InputStream input= newFileInputStream(file);
ZipOutputStream zipOut= new ZipOutputStream(newFileOutputStream(zipFile));
zipOut.putNextEntry(newZipEntry(file.getName()));int temp = 0;while((temp = input.read()) != -1){
zipOut.write(temp);
}
input.close();
zipOut.close();
}catch(Exception e) {
e.printStackTrace();
}
}
應用:
ZipFile("d:/hello.txt", "d:/hello.zip");
壓縮多個文件(文件夾)
/**一次性壓縮多個文件,文件存放至一個文件夾中*/
public static voidZipMultiFile(String filepath ,String zippath) {try{
File file= new File(filepath);//要被壓縮的文件夾
File zipFile = newFile(zippath);
InputStream input= null;
ZipOutputStream zipOut= new ZipOutputStream(newFileOutputStream(zipFile));if(file.isDirectory()){
File[] files=file.listFiles();for(int i = 0; i < files.length; ++i){
input= newFileInputStream(files[i]);
zipOut.putNextEntry(new ZipEntry(file.getName() + File.separator +files[i].getName()));int temp = 0;while((temp = input.read()) != -1){
zipOut.write(temp);
}
input.close();
}
}
zipOut.close();
}catch(Exception e) {
e.printStackTrace();
}
}
應用:
ZipMultiFile("f:/uu", "f:/zippath.zip");
解壓縮單個文件
/**解壓縮(解壓縮單個文件)*/
public static voidZipContraFile(String zippath ,String outfilepath ,String filename) {try{
File file= new File(zippath);//壓縮文件路徑和文件名
File outFile = new File(outfilepath);//解壓后路徑和文件名
ZipFile zipFile = newZipFile(file);
ZipEntry entry= zipFile.getEntry(filename);//所解壓的文件名
InputStream input =zipFile.getInputStream(entry);
OutputStream output= newFileOutputStream(outFile);int temp = 0;while((temp = input.read()) != -1){
output.write(temp);
}
input.close();
output.close();
}catch(Exception e) {
e.printStackTrace();
}
}
應用:
ZipContraFile("d:/hello.zip","d:/eee.txt", "hello.txt");
解壓縮多個文件
ZipInputStream類:
當我們需要解壓縮多個文件的時候,ZipEntry就無法使用了。
如果想操作更加復雜的壓縮文件,我們就必須使用ZipInputStream類。
/**解壓縮(壓縮文件中包含多個文件)可代替上面的方法使用。
* ZipInputStream類
* 當我們需要解壓縮多個文件的時候,ZipEntry就無法使用了,
* 如果想操作更加復雜的壓縮文件,我們就必須使用ZipInputStream類
**/
public static voidZipContraMultiFile(String zippath ,String outzippath){try{
File file= newFile(zippath);
File outFile= null;
ZipFile zipFile= newZipFile(file);
ZipInputStream zipInput= new ZipInputStream(newFileInputStream(file));
ZipEntry entry= null;
InputStream input= null;
OutputStream output= null;while((entry = zipInput.getNextEntry()) != null){
System.out.println("解壓縮" + entry.getName() + "文件");
outFile= new File(outzippath + File.separator +entry.getName());if(!outFile.getParentFile().exists()){
outFile.getParentFile().mkdir();
}if(!outFile.exists()){
outFile.createNewFile();
}
input=zipFile.getInputStream(entry);
output= newFileOutputStream(outFile);int temp = 0;while((temp = input.read()) != -1){
output.write(temp);
}
input.close();
output.close();
}
}catch(Exception e) {
e.printStackTrace();
}
}
應用:
ZipContraMultiFile("f:/zippath.zip", "d:/");
ZipContraMultiFile("d:/hello.zip", "d:/");
總結
以上是生活随笔為你收集整理的java.util.zip_[Java 基础] 使用java.util.zip包压缩和解压缩文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java ssm框架 缓存_SSM框架之
- 下一篇: html window 属性,html中