Java 如何测量任务进度并使用JProgressBar进行更新
我想显示完成任务的百分比。但是由于任务的长度取决于从文件中读取的数据量,我不能像现在这样硬编码Java 如何测量任务进度并使用JProgressBar进行更新,java,jprogressbar,Java,Jprogressbar,我想显示完成任务的百分比。但是由于任务的长度取决于从文件中读取的数据量,我不能像现在这样硬编码pb3.setValue(…)的值。我知道我可以使用setIntermediate(true)来显示任务正在进行中,但是是否有任何方法可以根据文件大小确定确切的任务进度 这就是我试图度量的操作,其中fileArray[2]是一个文本文件,我通过JFileChooser选择它 BufferedReader br3 = new BufferedReader(new FileReader(fileArray[
pb3.setValue(…)
的值。我知道我可以使用setIntermediate(true)
来显示任务正在进行中,但是是否有任何方法可以根据文件大小确定确切的任务进度
这就是我试图度量的操作,其中fileArray[2]
是一个文本文件,我通过JFileChooser选择它
BufferedReader br3 = new BufferedReader(new FileReader(fileArray[2]));
String line;
while ((line = br3.readLine()) != null) {
StringBuffer sb3 = new StringBuffer(br3.readLine());
progress += 1;
Thread.sleep(10);
pb3.setValue(Math.min(progress, 100));
sb3.reverse();
bwr3.write(sb3.toString());
txt3.append(sb3.toString());
}
提前感谢您的帮助或建议。试试以下方法:
BufferedReader br1 = new BufferedReader(
new FileReader(fileArray[1]));
while ((line = br1.readLine()) != null) {
StringBuffer sb1 = new StringBuffer(
br1.readLine());
sb1.reverse();
String lineReversed = sb1.toString();
byte[] bytesRead = lineReversed.getBytes();
for (int i = 0; i < bytesRead.length; i++) {
totalBytesRead = totalBytesRead
+ bytesRead[i];
}
}
BufferedReader br1n = new BufferedReader(
new FileReader(fileArray[1]));
int totalBytesReadNow = 0;
int progress = 0;
while ((line = br1n.readLine()) != null) {
StringBuffer sb1n = new StringBuffer(
br1n.readLine());
sb1n.reverse();
String lineReversed = sb1n.toString();
byte[] bytesReadNow = lineReversed.getBytes();
for (int i = 0; i < bytesReadNow.length; i++) {
totalBytesReadNow = totalBytesReadNow
+ bytesReadNow[i];
if (totalBytesReadNow >= totalBytesRead * 0.01) {
progress = progress + 1;
totalBytesReadNow = 0;
}
pb2.setValue(Math.min(progress, 100));
}
bwr1.write(lineReversed + "\n");
txt2.append(lineReversed);
Thread.sleep(0, 1);
}
bwr1.flush();
bwr1.close();
br1n.close();
br1.close();
BufferedReader br1=新的BufferedReader(
新的文件读取器(fileArray[1]);
而((line=br1.readLine())!=null){
StringBuffer sb1=新的StringBuffer(
br1.readLine());
sb1.reverse();
字符串lineReversed=sb1.toString();
byte[]bytesRead=lineReversed.getBytes();
for(int i=0;i=totalBytesRead*0.01){
进度=进度+1;
totalBytesReadNow=0;
}
pb2.设定值(数学最小值(进度,100));
}
bwr1.写入(lineReversed+“\n”);
txt2.追加(行反转);
睡眠(0,1);
}
bwr1.flush();
bwr1.close();
br1n.close();
br1.close();
试试这个:
BufferedReader br1 = new BufferedReader(
new FileReader(fileArray[1]));
while ((line = br1.readLine()) != null) {
StringBuffer sb1 = new StringBuffer(
br1.readLine());
sb1.reverse();
String lineReversed = sb1.toString();
byte[] bytesRead = lineReversed.getBytes();
for (int i = 0; i < bytesRead.length; i++) {
totalBytesRead = totalBytesRead
+ bytesRead[i];
}
}
BufferedReader br1n = new BufferedReader(
new FileReader(fileArray[1]));
int totalBytesReadNow = 0;
int progress = 0;
while ((line = br1n.readLine()) != null) {
StringBuffer sb1n = new StringBuffer(
br1n.readLine());
sb1n.reverse();
String lineReversed = sb1n.toString();
byte[] bytesReadNow = lineReversed.getBytes();
for (int i = 0; i < bytesReadNow.length; i++) {
totalBytesReadNow = totalBytesReadNow
+ bytesReadNow[i];
if (totalBytesReadNow >= totalBytesRead * 0.01) {
progress = progress + 1;
totalBytesReadNow = 0;
}
pb2.setValue(Math.min(progress, 100));
}
bwr1.write(lineReversed + "\n");
txt2.append(lineReversed);
Thread.sleep(0, 1);
}
bwr1.flush();
bwr1.close();
br1n.close();
br1.close();
BufferedReader br1=新的BufferedReader(
新的文件读取器(fileArray[1]);
而((line=br1.readLine())!=null){
StringBuffer sb1=新的StringBuffer(
br1.readLine());
sb1.reverse();
字符串lineReversed=sb1.toString();
byte[]bytesRead=lineReversed.getBytes();
for(int i=0;i=totalBytesRead*0.01){
进度=进度+1;
totalBytesReadNow=0;
}
pb2.设定值(数学最小值(进度,100));
}
bwr1.写入(lineReversed+“\n”);
txt2.追加(行反转);
睡眠(0,1);
}
bwr1.flush();
bwr1.close();
br1n.close();
br1.close();
您可以预先确定行数,但随后必须读取文件两次。或者,您可以检查文件大小并根据已处理的字节数更新进度。您可以提前确定行数,但随后必须读取文件两次。或者,您可以检查文件大小并根据已处理的字节数更新进度。