Java - Ayuda con pausar programa

   
Vista:

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
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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con pausar programa

Publicado por Nicolas (116 intervenciones) el 11/12/2017 15:39:36
Hola Juanillo.
No entiendo tanto tu problema planteado, pero quizas pueda servirte.
Prueba cambiando de lugar el Sleep, por ejemplo fuera del if, ahi veras que la opcion de comprobación cambiara.
Lo otro, necesitas que los archivos copiados tengan fecha y hora correlativa de acuerdo como se van copiando?? Crea un variable y toma la fecha/hora del sistema una vez que quieras copiarlo, no se van a copiar 2 con el mismo valor.
No se si te sirva, pero quizas puedas explicar mejor o darte otra idea.
Abrazo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda con pausar programa

Publicado por Juanillo (18 intervenciones) el 13/12/2017 22:21:06
Hola Nicolas:
Muchas gracias por atenderme,me cuesta explicarme ya que soy muy nuevo e esto y lo tengo como un joby.(lo siento)
Al tema, Tal y como lo tengo ahora la clase hace lo que le digo,el problema esta en la barra de progreso y la ventana de dialogo.
la ventana de dialogo la tengo que eliminar,porque realmente no me sirve y es haqui donde viene el problema,la barra de progreso deja de funcionar.Hablamos del metodo copyFiless(),el Sleep tambien fuera por que tanpoco me sirve ya que era para comprobar.
Un saludo

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.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
 
public class CopiaArchivos {
 
	 private OrdenaLista listOrdenada=new OrdenaLista();
	 private File carpeta = new File("G:/CursoJavaEclipse/CJE");
	 private JProgressBar progresoBarra;
	 private JFrame frame;
 
	public CopiaArchivos(JProgressBar pro_,JFrame frame_) throws IOException {
 
		this.frame=frame_;
		this.progresoBarra=pro_;
		if (carpeta.isDirectory()) {
			JOptionPane.showMessageDialog(frame, "si ta");
			copyFiless();
		}else {
			JOptionPane.showMessageDialog(frame, "No existe se creara la carpeta");
			carpeta.mkdirs();
		if (carpeta.exists()) {
			JOptionPane.showMessageDialog(frame, "carpeta creada");
			copyFiless();
		}else {JOptionPane.showMessageDialog(frame, "carpeta no creada");}
		}
	}
 
	private void copyFiless() throws IOException {
 
		for (int i=0;i<=listOrdenada.listaOrdenada().length-1;i++) {
			copyF("G:/CursoJavaEclipse/"+listOrdenada.listaOrdenada()[i],"G:/CursoJavaEclipse/CJE/"+listOrdenada.listaOrdenada()[i]);
			File f=new File("G:/CursoJavaEclipse/CJE/"+listOrdenada.listaOrdenada()[i]);
			if (!f.setLastModified(System.currentTimeMillis())) {
				JOptionPane.showMessageDialog(frame, "Fecha no cambiada");
			}else {
				progresoBarra.setValue(getTantoPorCiento(i));
 
				//____________________________________________________________
				JOptionPane.showMessageDialog(frame, "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 respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad