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

apache文件壓縮

發布時間: 2025-01-27 11:08:30

㈠ 誰有把多個文件夾壓縮成zip文件的java方法分享一個

ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("d:\\test.zip"));
String test1="test1";
String test2="test2";
byte[] bytes1 = test1.getBytes("UTF-8");
byte[] bytes2 = test2.getBytes("UTF-8");

ZipEntry z1 = new ZipEntry("test1.txt");
zos.putNextEntry(z1);
zos.write(bytes1);
ZipEntry z2 = new ZipEntry("text2.txt");
zos.putNextEntry(z2);
zos.write(bytes2);
zos.closeEntry();
zos.close();

//流可以自己獲取

//java默認的包不支持中文(亂碼)

//使用apache的ZipOutputStream進行zip壓縮

㈡ java用apache的ZipEntry壓縮文件名為中文的word文件時,文件名亂碼

apache自帶的zip方法有缺陷,沒有做中文的判斷的,這個是它的一個已知bug。
解決辦法:用jdk的rt.jar裡面的方法實現就可以了。
可以參考下以下工具類:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.Closeable;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

/**
*
* @author gdb
*/
public class ZipUtilAll {
public static final int DEFAULT_BUFSIZE = 1024 * 16;

/**
* 解壓Zip文件
*
* @param srcZipFile
* @param destDir
* @throws IOException
*/
public static void unZip(File srcZipFile, String destDir) throws IOException
{
ZipFile zipFile = new ZipFile(srcZipFile);
unZip(zipFile, destDir);
}

/**
* 解壓Zip文件
*
* @param srcZipFile
* @param destDir
* @throws IOException
*/
public static void unZip(String srcZipFile, String destDir) throws IOException
{
ZipFile zipFile = new ZipFile(srcZipFile);
unZip(zipFile, destDir);
}

/**
* 解壓Zip文件
*
* @param zipFile
* @param destDir
* @throws IOException
*/
public static void unZip(ZipFile zipFile, String destDir) throws IOException
{
Enumeration<? extends ZipEntry> entryEnum = zipFile.entries();
ZipEntry entry = null;
while (entryEnum.hasMoreElements()) {
entry = entryEnum.nextElement();
File destFile = new File(destDir + entry.getName());
if (entry.isDirectory()) {
destFile.mkdirs();
}
else {
destFile.getParentFile().mkdirs();
InputStream eis = zipFile.getInputStream(entry);
System.out.println(eis.read());
write(eis, destFile);
}
}
}

/**
* 將輸入流中的數據寫到指定文件
*
* @param inputStream
* @param destFile
*/
public static void write(InputStream inputStream, File destFile) throws IOException
{
BufferedInputStream bufIs = null;
BufferedOutputStream bufOs = null;
try {
bufIs = new BufferedInputStream(inputStream);
bufOs = new BufferedOutputStream(new FileOutputStream(destFile));
byte[] buf = new byte[DEFAULT_BUFSIZE];
int len = 0;
while ((len = bufIs.read(buf, 0, buf.length)) > 0) {
bufOs.write(buf, 0, len);
}
} catch (IOException ex) {
throw ex;
} finally {
close(bufOs, bufIs);
}
}

/**
* 安全關閉多個流
*
* @param streams
*/
public static void close(Closeable... streams)
{
try {
for (Closeable s : streams) {
if (s != null)
s.close();
}
} catch (IOException ioe) {
ioe.printStackTrace(System.err);
}
}
/**
* @param args
* @throws java.lang.Exception
*/
public static void main(String[] args) throws Exception
{
// unZip(new File(ZipDemo.class.getResource("D:/123/HKRT-B2B.zip").toURI()), "D:/123/");
unZip("D:/123/123.zip", "D:/123/");
// new File();
}
}

㈢ 如何在 apache 中開啟 gzip 壓縮服務

伺服器設置 gzip 壓縮是 web 開發里很普遍的做法。假設你要請求一個 100k 的文件,網路傳輸速度為 50k/s,需要 2s 才能得到數據,但是如果在伺服器設置了 gzip 壓縮,將服務端的文件壓縮到了 50k(實際上的壓縮率往往小於 50%),這時候只需 1s 就能得到數據,然後在客戶端解壓即可。

可以對比下同一個文件在開啟 gzip 前後的大小。

gzip 壓縮前:

那麼如何在服務端開啟 gzip 服務呢?這里以 apache 為例簡單介紹下。

打開 apache 的 "httpd.conf" 文件,比如我的是在 "C:wampinapacheApache2.2.21conf" 目錄下。找到以下這一行,將它前面的注釋(#)去掉:

很多參考文件都提到同時要對 LoadMole headers_mole moles/mod_headers.so 去掉注釋,說 "如果不開啟這個,那網站就不能正常顯示了" ,不過我在測試過程中沒有去掉也沒有問題。

接著再添上以下代碼:

這樣就能對所有文件進行 gzip 壓縮了。壓縮等級是個 1-9 之間的整數,取值范圍在 1(最低) 到 9(最高)之間,不建議設置太高,雖然有很高的壓縮率,但是佔用更多的CPU資源。(本地測試了下 1 和 9 壓縮率差不了多少...)

實際開發中我們並不需要對所有文件進行壓縮,比如我們無需對圖片文件進行 gzip 壓縮,因為圖片文件(一般為 jpg、png等格式)本身已經壓縮過了,再進行 gzip 壓縮可能會適得其反(詳見 圖片要啟用gzip壓縮嗎?絕對不要!,背景圖片千萬不要gzip壓縮,尤其是PNG),類似的還有 PDF 以及音樂文件。所以我們可以設置過濾指定文件或者對指定文件進行壓縮。

比如我們要對圖片等特殊文件不進行 gzip 壓縮處理:

或者指定文件格式進行壓縮:

修改好後,保存 httpd.conf 文件,記得重啟 apache,再刷新瀏覽器看請求,應該已經生效了!

熱點內容
數控車編程視頻 發布:2025-01-28 00:15:02 瀏覽:967
壓縮機帶電 發布:2025-01-28 00:06:14 瀏覽:195
雲存儲拓撲圖 發布:2025-01-27 23:58:00 瀏覽:830
中央編譯局女博士微博 發布:2025-01-27 23:44:24 瀏覽:698
加密通知平台 發布:2025-01-27 23:43:50 瀏覽:424
斗魚安卓手機如何直播 發布:2025-01-27 23:31:44 瀏覽:407
手機跟電腦伺服器同步軟體 發布:2025-01-27 23:29:09 瀏覽:124
iphone正在載入頁面配置信息怎麼解決 發布:2025-01-27 23:27:02 瀏覽:752
esp8266sdk編譯環境 發布:2025-01-27 23:18:10 瀏覽:285
ubuntuc編譯 發布:2025-01-27 23:01:27 瀏覽:607