『壹』 java中將一個文件夾下所有的文件壓縮成一個文件,然後,解壓到指定目錄.
import java.io.*;
import java.util.zip.*;
public class CompressD {
// 緩沖
static byte[] buffer = new byte[2048];
public static void main(String[] args) throws Exception {
// 來源
File inputDir = new File("C:\\CompressTest\\");
// 目標
FileOutputStream fos = new FileOutputStream("C:\\CompressTest.zip");
// 過濾
ZipOutputStream zos = new ZipOutputStream(fos);
// 壓縮
zip(inputDir.listFiles(), "", zos);
// 關閉
zos.close();
}
private static void zip(File[] files, String baseFolder, ZipOutputStream zos)
throws Exception {
// 輸入
FileInputStream fis = null;
// 條目
ZipEntry entry = null;
// 數目
int count = 0;
for (File file : files) {
if (file.isDirectory()) {
// 遞歸
zip(file.listFiles(), file.getName() + File.separator, zos);
continue;
}
entry = new ZipEntry(baseFolder + file.getName());
// 加入
zos.putNextEntry(entry);
fis = new FileInputStream(file);
// 讀取
while ((count = fis.read(buffer, 0, buffer.length)) != -1)
// 寫入
zos.write(buffer, 0, count);
}
}
}
『貳』 電腦文件zip如何壓縮java實現對zip文件的壓縮
電腦文件zip如何壓縮(java實現對zip文件的壓縮)
一、java實現壓縮為zip
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.OutputStream;
importjava.util.zip.ZipEntry;
importjava.util.zip.ZipOutputStream;
publicclassZipUtils{
privatestaticfinalintBUFFER_SIZE=2*1024;
publicstaticvoiddirFile(Filedir){
File[]files=dir.listFiles();//得到File數組,獲得目錄下所有文件
for(Filefile:files){//遍歷所有的子目錄和文件
if(file.isDirectory()){
dirFile(file);//如果是目錄遞歸調用dirFile()
}
//成功壓縮文件後,對原文件進行刪除
file.delete();
}
//順帶把對應的目錄進行刪除
dir.delete();
}
/**
*壓縮成ZIP方法1
*@paramsrcDir壓縮文件夾路徑
*@paramout壓縮文件輸出流
*@paramKeepDirstructure是否保留原來的目錄結構,true:保留目錄結構;
*false:所有文件跑到壓縮包根目錄下(注意:不保留目錄結構可能會出現同名文件,會壓縮失敗)
*@throwsRuntimeException壓縮失敗會拋出運行時異常
*/
publicstaticvoidtoZip(StringsrcDir,OutputStreamout,booleanKeepDirstructure)
throwsRuntimeException{
longstart=System.currentTimeMillis();
ZipOutputStreamzos=null;
try{
zos=newZipOutputStream(out);
FilesourceFile=newFile(srcDir);
compress(sourceFile,zos,sourceFile.getName(),KeepDirstructure);
longend=System.currentTimeMillis();
System.out.println("壓縮完成,耗時:"+(end-start)+"ms");
}catch(Exceptione){
thrownewRuntimeException("ziperrorfromZipUtils",e);
}finally{
if(zos!=null){
try{
zos.close();
}catch(IOExceptione){
e.printstacktrace();
}
}
}
}
/**
*遞歸壓縮方法
*@paramsourceFile源文件
*@paramzoszip輸出流
*@paramname壓縮後的名稱
*@paramKeepDirstructure是否保留原來的目錄結構,會壓縮失敗)
*@throwsException
*/
privatestaticvoidcompress(FilesourceFile,ZipOutputStreamzos,Stringname,
booleanKeepDirstructure)throwsException{
byte[]buf=newbyte[BUFFER_SIZE];
if(sourceFile.isFile()){
//向zip輸出流中添加一個zip實體,構造器中name為zip實體的文件的名字
zos.putNextEntry(newZipEntry(name));
//文件到zip輸出流中
intlen;
FileInputStreamin=newFileInputStream(sourceFile);
while((len=in.read(buf))!=-1){
zos.write(buf,len);
}
//Completetheentry
zos.closeEntry();
in.close();
}else{
File[]listFiles=sourceFile.listFiles();
if(listFiles==null||listFiles.length==0){
//需要保留原來的文件結構時,需要對空文件夾進行處理
if(KeepDirstructure){
//空文件夾的處理
zos.putNextEntry(newZipEntry(name+"/"));
//沒有文件,不需要文件的
zos.closeEntry();
}
}else{
for(Filefile:listFiles){
//判斷是否需要保留原來的文件結構
if(KeepDirstructure){
//注意:file.getName()前面需要帶上父文件夾的名字加一斜杠,
//不然最後壓縮包中就不能保留原來的文件結構,即:所有文件都跑到壓縮包根目錄下了
compress(file,name+"/"+file.getName(),KeepDirstructure);
}else{
compress(file,file.getName(),KeepDirstructure);
}
}
}
}
}
}
『叄』 Java中如何將tar歸檔文件壓縮成tar.Z文件
zcat命令
compress [-fv] [-b bits] [file...]
compress [-cfv] [-b bits] [file]
uncompress [-cfv] [file...]
zcat [file...]
Process p = Runtime.getRuntime().exec("ps -ef");
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
// read the output from the command
System.out.println("Here is the standard output of the command:\n");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
System.exit(0);