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

壓縮源碼

發布時間: 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();
}
}

熱點內容
qq電腦聊天緩存不安全 發布:2025-09-19 03:43:38 瀏覽:361
大話2腳本製作 發布:2025-09-19 03:25:47 瀏覽:497
腳本精靈用的什麼語言 發布:2025-09-19 03:21:32 瀏覽:847
微型機常用的存儲器 發布:2025-09-19 03:18:17 瀏覽:469
迷你世界腳本編輯代碼在哪裡 發布:2025-09-19 03:17:40 瀏覽:374
我的世界110伺服器的天域組織 發布:2025-09-19 02:49:36 瀏覽:797
為什麼安卓手機使用久了會變卡 發布:2025-09-19 02:49:36 瀏覽:876
國家校時伺服器ip 發布:2025-09-19 02:45:18 瀏覽:922
安卓補幀軟體在哪裡下 發布:2025-09-19 02:45:17 瀏覽:33
安卓移機蘋果怎麼操作 發布:2025-09-19 01:58:55 瀏覽:164