生活當中的我們經常使用一個寫文件壓縮和解壓的工具,也就是可視化的工具。比如,好壓還有360等等使我們比較常見的工具。
那麼一個工具的使用背後往往是代碼或者說是程序在操控的,我們習慣了司空見慣的東西,比如能夠使用工具的東西我們肯定不會使用手動操作來完成,能夠機械化的東西我們也不會使用人工來完成。
但是這些東西使用的前提,那就是必須要人 先製造出這些東西,我們才能使用呢,所以工具不是從石頭縫裏蹦出來的,是需要人們進行創造的。
那麼大家使用的壓縮工具其實是已經有人編寫出來的成過了,最近在項目中就遇到了這個問題,什麼問題呢?就是將商家制作的二維碼進行導出,因爲製作的二維碼的張數可能達到了上百萬張,如果直接導出,那麼可想而知需要消耗的時間以及佔用空間是很大的,那麼爲了可以節約空間和壓縮的時間,我們可以將其壓縮到一個文件中。在這裏可是沒有壓縮工具可以直接使用的,對於一個平臺來說,商家登錄製作的二維碼是放在只有這個平臺開發人員知道的地方,我們總不能讓每個商戶登錄去哪裏進行壓縮吧?
所以這個時候我們就要知道壓縮是怎麼實現的了。
public class ZipUtil {
//壓縮文件
public static void zip(String fromPath,String zipFile,List<String> pictureName)throws Exception{
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile));
int len = 0;
InputStream is=null;
for(int i=0;i<pictureName.size();i++) {
zos.setComment("zip測試for單個文件");
ZipEntry entry = new ZipEntry( pictureName.get(i));
zos.putNextEntry(entry);
is= new FileInputStream(fromPath+"/" + pictureName.get(i));
while ((len = is.read()) != -1)
zos.write(len);
}
zos.flush();
is.close();
zos.close();
}
}
參數講解:StringfromPath,String zipFile,List<String> pictureName;
Frompath:我們獲取二維碼的地址;
Zipfile:我們將壓縮完的文件存放的地址;
PictureName:是我們進行要壓縮的二維碼圖片;
這樣就知道怎麼使用了吧?
調用方法的時候只要將參數傳入即可。
ZipUtil .zip(fromPath,zipFile, pictureName)。
是不是清楚明白了呢?但是這種方式只是適合的是壓縮子集中沒有目錄的文件。