域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)
當(dāng)讀取一個(gè)大文件時(shí),一時(shí)半會(huì)兒無(wú)法看到讀取結(jié)果,就需要顯示一個(gè)進(jìn)度條,是程序員明白已經(jīng)讀了多少文件,可以估算讀取還需要多少時(shí)間,下面的代碼可以實(shí)現(xiàn)這個(gè)功能
實(shí)現(xiàn)這個(gè)功能比較簡(jiǎn)單,用到的類(lèi)有兩個(gè):ProgressMonitorInputStream(主要是整個(gè)類(lèi)) 和 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)步無(wú)法達(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ī)遇!