當前位置:首頁 » 文件管理 » 壓縮源碼

壓縮源碼

發布時間: 2023-07-09 00:23:41

㈠ 求一個java壓縮程序源代碼。

package com.io2.homework;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/*壓縮文件夾*/
public class MyMultipleFileZip
{
private String currentZipFilePath = "F:/MyZip.zip";
private String sourceFilePath;
private ZipOutputStream zos;
private FileInputStream fis;

public MyMultipleFileZip(String sourceFilePath)
{
try
{
this.sourceFilePath = sourceFilePath;
zos = new ZipOutputStream(new FileOutputStream(currentZipFilePath));
//設定文件壓縮級別
zos.setLevel(9);
} catch (FileNotFoundException e)
{
e.printStackTrace();
}
}

// 在當前條目中寫入具體內容
public void writeToEntryZip(String filePath)
{
try
{
fis = new FileInputStream(filePath);
} catch (FileNotFoundException e1)
{
e1.printStackTrace();
}
byte[] buff = new byte[1024];
int len = 0;
try
{
while ((len = fis.read(buff)) != -1)
{
zos.write(buff, 0, len);
}
} catch (IOException e)
{
e.printStackTrace();
}finally
{
if (fis != null)
try
{
fis.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}

// 添加文件條目
public void addFileEntryZip(String fileName)
{
try
{
zos.putNextEntry(new ZipEntry(fileName));
} catch (IOException e)
{
e.printStackTrace();
}
}

public void addDirectoryEntryZip(String directoryName)
{
try
{
zos.putNextEntry(new ZipEntry(directoryName + "/"));
} catch (IOException e)
{
e.printStackTrace();
}
}

// 遍歷文件夾
public void listMyDirectory(String filePath)
{
File f = new File(filePath);
File[] files = f.listFiles();
if(files!=null)
{
for (File currentFile : files)
{
// 設置條目名稱(此步驟非常關鍵)
String entryName= currentFile.getAbsolutePath().split(":")[1].substring(1);
// 獲取文件物理路徑
String absolutePath = currentFile.getAbsolutePath();
if (currentFile.isDirectory())
{
addDirectoryEntryZip(entryName);
//進行遞歸調用
listMyDirectory(absolutePath);

}
else
{
addFileEntryZip(entryName);
writeToEntryZip(absolutePath);
}
}
}
}

// 主要流程
public void mainWorkFlow()
{
listMyDirectory(this.sourceFilePath);
if(zos!=null)
try
{
zos.close();
} catch (IOException e)
{
e.printStackTrace();
}
}

public static void main(String[] args)
{
new MyMultipleFileZip("F:/fountainDirectory").mainWorkFlow();
}
}

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:582
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:876
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:571
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:757
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:673
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1000
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:243
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:103
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:795
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:701