日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Java使用線程池遞歸壓縮文件夾下面的所有子文件

本文將介紹Java中利用線程池遞歸的方式壓縮文件夾下面的所有子文件,具體方法如下:

成都創(chuàng)新互聯(lián)制作網(wǎng)站網(wǎng)頁(yè)找三站合一網(wǎng)站制作公司,專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì),成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,網(wǎng)站設(shè)計(jì),企業(yè)網(wǎng)站搭建,網(wǎng)站開(kāi)發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為上千家服務(wù),成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣服務(wù)!

Gzip單個(gè)文件壓縮

對(duì)于單個(gè)文件使用GZip壓縮。

 
 
  1. package date0805.demo1; 
  2.  
  3. import java.io.BufferedInputStream; 
  4. import java.io.BufferedOutputStream; 
  5. import java.io.File; 
  6. import java.io.FileInputStream; 
  7. import java.io.FileOutputStream; 
  8. import java.io.InputStream; 
  9. import java.io.OutputStream; 
  10. import java.util.zip.GZIPOutputStream; 
  11.  
  12. public class GZipRunnable implements Runnable { 
  13.  
  14. private final File file; 
  15.  
  16. public GZipRunnable(File file) { 
  17.   this.file=file; 
  18.  
  19. @Override 
  20. public void run() { 
  21.   if(!file.getName().endsWith(".gz")) { 
  22.    File outputFile=new File(file.getParent(),file.getName()+".gz"); 
  23.    if(!outputFile.exists()) { 
  24.     CountTime countTime = new CountTime(file); 
  25.     Thread t=new Thread(countTime); 
  26.     t.start(); 
  27.     try( 
  28.      InputStream in =new BufferedInputStream(new FileInputStream(file)); 
  29.      OutputStream out=new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(outputFile))); 
  30.     ) { 
  31.      int b; 
  32.      while((b=in.read())!=-1) 
  33.       out.write(b); 
  34.      out.flush(); 
  35.     } catch(Exception ex) { 
  36.      ex.printStackTrace(); 
  37.     } 
  38.     t.interrupt(); 
  39.    } else { 
  40.     System.out.println(outputFile+"文件已經(jīng)存在,無(wú)法壓縮!"); 
  41.    } 
  42.   } 

創(chuàng)建線程池進(jìn)行遞歸壓縮

要實(shí)現(xiàn)對(duì)一個(gè)文件夾下面的所有的子文件進(jìn)行壓縮,首先遞歸找出所有子文件,然后調(diào)用壓縮線程進(jìn)行壓縮。

 
 
  1. package date0805.demo1; 
  2.  
  3. import java.io.File; 
  4. import java.util.concurrent.ExecutorService; 
  5. import java.util.concurrent.Executors; 
  6.  
  7. public class GZipFiles { 
  8.  
  9. private final static int THREAD_COUNT=4; 
  10. private static ExecutorService service=Executors.newFixedThreadPool(THREAD_COUNT); 
  11. public static void GZip(File fileArgs) { 
  12.   if(!fileArgs.isDirectory()) { 
  13.    GZipRunnable gZipRunnable = new GZipRunnable(fileArgs); 
  14.    service.submit(gZipRunnable); 
  15.   } 
  16.   else { 
  17.    File[] files = fileArgs.listFiles(); 
  18.    for(File f:files) { 
  19.     GZip(f); 
  20.    } 
  21.   } 
  22. public static void shutdown() { 
  23.   service.shutdown(); 

壓縮提示

 
 
  1. package date0805.demo1; 
  2.  
  3. import java.io.File; 
  4.  
  5. public class CountTime implements Runnable { 
  6.  
  7. private File file; 
  8.  
  9. public CountTime(File file) { 
  10.   super(); 
  11.   this.file = file; 
  12.  
  13. @Override 
  14. public void run() { 
  15.   System.out.println("正在壓縮"+file.getAbsolutePath()); 
  16.   try { 
  17.    while(true) { 
  18.     System.out.print("."); 
  19.     Thread.sleep(1000); 
  20.    } 
  21.   }catch (InterruptedException e) { 
  22.    System.out.println(); 
  23.    System.out.println(file.getAbsolutePath()+".gz已經(jīng)壓縮完成!"); 
  24.   } 
  25.  

測(cè)試代碼

 
 
  1. package date0805.demo1; 
  2.  
  3. import java.io.File; 
  4.  
  5. public class Test { 
  6.  
  7. public static void main(String[] args) { 
  8.   File file=new File("D://新建文件夾"); 
  9.   GZipFiles.GZip(file); 
  10.   GZipFiles.shutdown(); 
  11. }

當(dāng)前文章:Java使用線程池遞歸壓縮文件夾下面的所有子文件
轉(zhuǎn)載源于:http://m.5511xx.com/article/dhdhegh.html