Estou estudando e tentando implementar uma barra de progresso (conforme eu consegui assimilar pelo que li) e não estou conseguindo ver onde estou errando. Quem puder me ajudar agradeço.
package zipnew;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.swing.JOptionPane;
public class Zipar{
public static void zipa(Date d) {
String dir = ("d:\Cam");
File file;
File arquivos [];
file = new File(dir);
File afile [] = file.listFiles();
arquivos = new File [afile.length];
int count = 0;
int i = 0;
Date fileDate = null;
//Data do Sistema
Calendar cal = Calendar.getInstance();
cal.set (Calendar.HOUR,0);
cal.set (Calendar.MINUTE,0);
cal.set (Calendar.SECOND,0);
cal.set (Calendar.MILLISECOND,0);
Date sysDate = cal.getTime();
sysDate.setHours(0);
//verifica se a data escolhida e a data corrente
if(d.compareTo(sysDate)==0){
JOptionPane.showMessageDialog(null,"Não é possivel zipar arquivos do dia corrente!!!");
return;
}else{
//verifica se a data escolhida e um dia futuro
if(d.after(sysDate)){
JOptionPane.showMessageDialog(null,"Escolha uma data valida!!!");
return;
}else{
for (int j = afile.length ; i<j; i++){
//verifica se existem arquivos na data escolhida e carrega o vetor
fileDate= new Date(afile[i].lastModified());
Calendar calFile = Calendar.getInstance();
calFile.setTime(fileDate);
calFile.set (Calendar.HOUR, 0);
calFile.set (Calendar.MINUTE, 0);
calFile.set (Calendar.SECOND, 0);
calFile.set (Calendar.MILLISECOND, 0);
fileDate = calFile.getTime();
fileDate.setHours(0);
if(d.compareTo(fileDate)==0){
arquivos[count] = afile[i];
count = count+1;
}
}
MinhaThread t = new MinhaThread(count);
// t.start();
//verifica se o vetor esta vazio
if (arquivos==null){
JOptionPane.showMessageDialog(null,"Não existe arquivo nesta data para compactar!!!");
return;
}else{
byte[] buf = new byte[1024];
try {
String outFilename = "d:\backup\Backup.zip";
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));
i = 0;
for (int j=count; i<j ; i++){
t.start();
FileInputStream in = new FileInputStream(arquivos[i]);
out.putNextEntry(new ZipEntry(arquivos[i].getName()));
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.closeEntry();
in.close();
}
out.close();
JOptionPane.showMessageDialog(null,"Concluido!!!");
}
catch (IOException e) {
}
}
}
}
}
}
package zipnew;
import javax.swing.JProgressBar;
public class MinhaThread extends Thread {
// área de dados da Thread
private int contador;
private int limite;
JProgressBar jp;
// inicializador da MinhaThread
public MinhaThread( int limite ) {
this.limite = limite;
this.contador = 0;
}
// área de código da Thread
public void run() {
jp.setMaximum(limite);
while (contador <= limite) {
jp.setValue(contador);
try {
Thread.sleep( 1000 ); // coloca a "thread" para "dormir" 1 segundo
} catch (InterruptedException e) {
e.printStackTrace( System.err );
}
}
}
}
