
Ayuda con pausar programa
Publicado por Juanillo (18 intervenciones) el 10/12/2017 16:30:11
buenas gente:
No se como empezar, el tema esta en que me hecho una aplicacion(estoy en ello),que me coge los ficheros de una carpeta,crea una subcarpeta y me copia todos los ficheros ordenados por fecha en la subcarpeta,hasta aqui todo bien,el problema viene cuando intento pausar la aplicacion,
resumiendo en el caso:
en el metodo copyFiless(), en el bloque if uso Thread.sleep,(dentro de un bloque try)una barra de progreso y una ventana de dialogo(que solo estoy usando para ver si el flujo del programa pasa por el bloque);,el caso es que si elimino el bloque try y dejo la ventana de dialogo la barra de progreso funciona(cada vez que le doy aceptar la barra de progreso aumenta el porcentaje progresivamente hasta el ultimo),en caso contrario dejando solo el try ,la barra de progreso no aumenta progresivamente si no cuando termina de copiar los ficheros,ahora uso 7 archivos para ver que la aplicacion funciona,pero realmente tengo que ordenar unos 300 archivos y claro no voy a mostrar una ventana de dialogo uno a uno,y necesito pausar para asegurarme de que cuando copia el ficherito no coincida la hora de la fecha con el copiado anteriormente
No se como empezar, el tema esta en que me hecho una aplicacion(estoy en ello),que me coge los ficheros de una carpeta,crea una subcarpeta y me copia todos los ficheros ordenados por fecha en la subcarpeta,hasta aqui todo bien,el problema viene cuando intento pausar la aplicacion,
resumiendo en el caso:
en el metodo copyFiless(), en el bloque if uso Thread.sleep,(dentro de un bloque try)una barra de progreso y una ventana de dialogo(que solo estoy usando para ver si el flujo del programa pasa por el bloque);,el caso es que si elimino el bloque try y dejo la ventana de dialogo la barra de progreso funciona(cada vez que le doy aceptar la barra de progreso aumenta el porcentaje progresivamente hasta el ultimo),en caso contrario dejando solo el try ,la barra de progreso no aumenta progresivamente si no cuando termina de copiar los ficheros,ahora uso 7 archivos para ver que la aplicacion funciona,pero realmente tengo que ordenar unos 300 archivos y claro no voy a mostrar una ventana de dialogo uno a uno,y necesito pausar para asegurarme de que cuando copia el ficherito no coincida la hora de la fecha con el copiado anteriormente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package ficheros;
import java.io.File;
import java.io.IOException;
import java.nio.file.CopyOption;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
public class CopiaArchivos {
private OrdenaLista listOrdenada=new OrdenaLista();
private File carpeta = new File("d:/pruebas/java");
private JProgressBar progresoBarra;
public CopiaArchivos(JProgressBar pro_) throws IOException {
this.progresoBarra=pro_;
if (carpeta.isDirectory()) {
JOptionPane.showMessageDialog(null, "si ta");
copyFiless();
}else {
JOptionPane.showMessageDialog(null, "No existe se creara la carpeta");
carpeta.mkdirs();
if (carpeta.exists()) {
JOptionPane.showMessageDialog(null, "carpeta creada");
copyFiless();
}else {JOptionPane.showMessageDialog(null, "carpeta no creada");}
}
}
private void copyFiless() throws IOException {
for (int i=0;i<=listOrdenada.listaOrdenada().length-1;i++) {
System.out.println(listOrdenada.listaOrdenada()[i]);
copyF("d:/pruebas/"+listOrdenada.listaOrdenada()[i],"d:/pruebas/java/"+listOrdenada.listaOrdenada()[i]);
File f=new File("d:/pruebas/java/"+listOrdenada.listaOrdenada()[i]);
if (!f.setLastModified(System.currentTimeMillis())) {
JOptionPane.showMessageDialog(null, "Fecha no cambiada");
}else {
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(getTantoPorCiento(i));
progresoBarra.setValue(getTantoPorCiento(i));
//JOptionPane.showMessageDialog(null, "Fecha si cambiada");
}
}
}
private void copyF(String origen,String destino) throws IOException {
Path FROM = Paths.get(origen);
Path TO = Paths.get(destino);
CopyOption[] options = new CopyOption[] {
StandardCopyOption.REPLACE_EXISTING,
StandardCopyOption.COPY_ATTRIBUTES
};
Files.copy(FROM, TO, options);
}
private int getTantoPorCiento(int i) {
return Math.round((100*i)/(listOrdenada.listaOrdenada().length-1));
}
}
Valora esta pregunta


0