當(dāng)前位置:首頁 >  站長(zhǎng) >  編程技術(shù) >  正文

java讀取文件顯示進(jìn)度條的代碼分享

 2021-01-07 16:44  來源: 網(wǎng)絡(luò)綜合   我來投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過

當(dāng)讀取一個(gè)大文件時(shí),一時(shí)半會(huì)兒無法看到讀取結(jié)果,就需要顯示一個(gè)進(jìn)度條,是程序員明白已經(jīng)讀了多少文件,可以估算讀取還需要多少時(shí)間,下面的代碼可以實(shí)現(xiàn)這個(gè)功能

實(shí)現(xiàn)這個(gè)功能比較簡(jiǎn)單,用到的類有兩個(gè):ProgressMonitorInputStream(主要是整個(gè)類) 和 ProgressMonitor ,它們?cè)趈avax.swing中

大體思路,你要首先知道整個(gè)文件的大小,和當(dāng)前已經(jīng)讀取文件的大小,獲得整個(gè)文件大小的方法
ProgressMonitorInputStream monitor;
/**
* @param 表示此進(jìn)度條要依附在哪個(gè)組件上
* @param 顯示在此進(jìn)度條上的消息
* @param 需要監(jiān)控的輸入流
*/
monitor = new ProgressMonitorInputStream(null, "Loading ",new FileInputStream("filename path"));
int all = monitor.available();//整個(gè)文件的大小
int in = monitor.read(data);//每次讀取文件的大小

例如:你每次讀一行str=in.readLine();則data=str.instr.getBytes()+1;這里+1,主要是為了獲得換行符的字節(jié)數(shù),否則,最后獲得的進(jìn)步無法達(dá)到100%
int readed=0;//表示已經(jīng)讀取的文件
reader+=in;//累加讀取文件大小

float process = (float) readed / all * 100;// 算出百分比

progressMonitor.setNote("archived " + process + " %");// 顯示在進(jìn)度條上

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)標(biāo)簽
java進(jìn)度條

相關(guān)文章

熱門排行

信息推薦