第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Java使用線程池遞歸壓縮文件夾下面的所有子文件

標(biāo)簽:
Java

原文链接

本文将介绍Java中利用线程池递归的方式压缩文件夹下面的所有子文件,具体方法如下:

Gzip单个文件压缩

对于单个文件使用GZip压缩。

package date0805.demo1;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.zip.GZIPOutputStream;public class GZipRunnable implements Runnable {	private final File file;	public GZipRunnable(File file) {		this.file=file;
	}	@Override
	public void run() {		if(!file.getName().endsWith(".gz")) {
			File outputFile=new File(file.getParent(),file.getName()+".gz");			if(!outputFile.exists()) {
				CountTime countTime = new CountTime(file);
				Thread t=new Thread(countTime);
				t.start();				try(
					InputStream in =new BufferedInputStream(new FileInputStream(file));
					OutputStream out=new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(outputFile)));
				) {					int b;					while((b=in.read())!=-1)
						out.write(b);
					out.flush();
				} catch(Exception ex) {
					ex.printStackTrace();
				}
				t.interrupt();
			} else {
				System.out.println(outputFile+"文件已经存在,无法压缩!");
			}
		}
	}
}

创建线程池进行递归压缩

要实现对一个文件夹下面的所有的子文件进行压缩,首先递归找出所有子文件,然后调用压缩线程进行压缩。

package date0805.demo1;import java.io.File;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class GZipFiles {	private final static int THREAD_COUNT=4;	private static ExecutorService service=Executors.newFixedThreadPool(THREAD_COUNT);	public static void GZip(File fileArgs) {		if(!fileArgs.isDirectory()) {
			GZipRunnable gZipRunnable = new GZipRunnable(fileArgs);
			service.submit(gZipRunnable);
		}		else {
			File[] files = fileArgs.listFiles();			for(File f:files) {
				GZip(f);
			}
		}
	}	public static void shutdown() {
		service.shutdown();
	}
}

压缩提示

package date0805.demo1;import java.io.File;public class CountTime implements Runnable {	private File file;	public CountTime(File file) {		super();		this.file = file;
	}	@Override
	public void run() {
		System.out.println("正在压缩"+file.getAbsolutePath());		try {			while(true) {
				System.out.print(".");
				Thread.sleep(1000);
			}
		}catch (InterruptedException e) {
			System.out.println();
			System.out.println(file.getAbsolutePath()+".gz已经压缩完成!");
		}
	}

}

测试代码

package date0805.demo1;import java.io.File;public class Test {	public static void main(String[] args) {
		File file=new File("D://新建文件夹");
		GZipFiles.GZip(file);
		GZipFiles.shutdown();
	}
}


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消