Foros del Web » Programación para mayores de 30 ;) » Java »

Leer .txt de gran peso.

Estas en el tema de Leer .txt de gran peso. en el foro de Java en Foros del Web. Antes que nada saludar a todos los integrantes de este foro. Estoy realizando una aplicacion swing, donde necesito que al pulsar un boton, lea un ...
  #1 (permalink)  
Antiguo 20/01/2012, 12:39
 
Fecha de Ingreso: enero-2012
Mensajes: 4
Antigüedad: 8 años
Puntos: 0
Pregunta Leer .txt de gran peso.

Antes que nada saludar a todos los integrantes de este foro. Estoy realizando una aplicacion swing, donde necesito que al pulsar un boton, lea un archivo .txt de gran tamaño, donde las lineas tienen unos datos separados por tabulacion ( cada linea puede tener unos 120 caracteres y algunas tienen 3 campos y otras 4) y los muestre en jtextarea. Pues bien, consigo leer el archivo, trabajar con los datos ( solamente necesito meter una tabulacion mas entre los ultimos datos ) y que se muestren en el jtextarea, pero llega un momento donde la aplicacion se queda congelada, el jprogressbar no sigue funcioanndo y aveces se pone la pantalla en negra. He probado en modo de depuracion, pero en netbean no me da ningun error. Sin embargo si leo un archivo .txt de menor tamaño ( unos poco megas ) si lo hace correctamente.

P.d. El txt de gran tamaño puede tener unas 500.000 lineas, pongo aqui la clase que lee los datos, trabaja con ellos y muestra por ventana, como vereis es un hilo para no interferir con el hilo del swing.

Agradezco mucho toda la ayuda que me podais prestar.


Código:
class cPro extends Thread{



 String lineapro;


 public cPro(){

 }


 public void run(){
 jBar3.setIndeterminate(true);
 try {
 while((lineapro=vproo.readLine())!=null){ //vproo lo defino dentro del boton del swing
 
Matcher m1 = p1.matcher(lineapro); // Matcher es una variable global 
if(m1.find()){ 
if(lineapro.split("\t").length==3) {
 if(lineapro.split("\t")[2].length()==3 || lineapro.split("\t")[2].length()==30){
 synchronized (jTextArea6){

 jTextArea6.append(lineapro+"\t\n");
 contproo++; 
jLabel15.setText("Contador: "+contproo);
 }

 }
 else
 {
 synchronized (jTextArea7){
 jTextArea7.append(lineapro+"\n");
 contproomal++;
 jLabel17.setText("Contador: "+contproomal);

 }}
 }
 if(lineapro.split("\t").length==4) {
 if(lineapro.split("\t")[2].length()==3 || lineapro.split("\t")[2].length()==30){
 synchronized (jTextArea6){

 jTextArea6.append(lineapro.replace(lineapro.split("\t")[3], "\t"+lineapro.split("\t")[3])+"\n");
 contproo++; 
jLabel15.setText("Contador: "+contproo);

 }
 }
 else
 {
 synchronized (jTextArea7){
 jTextArea7.append(lineapro+"\n");
 contproomal++;
 jLabel17.setText("Contador: "+contproomal);

 }
 }
 }
 if(lineapro.split("\t").length!=3 && lineapro.split("\t").length!=4){
 synchronized (jTextArea7){
 jTextArea7.append(lineapro+"\n");
 contproomal++;
 jLabel17.setText("Contador: "+contproomal);


 }
 }
 }
 else{
 synchronized (jTextArea7){
 jTextArea7.append(lineapro+"\n");
 contproomal++;
 jLabel17.setText("Contador: "+contproomal);

 }
 }
 }
 }
 catch (IOException ex) {
 Logger.getLogger(cVbulletin.class.getName()).log(Level.SEVERE, null, ex);
 }
 finally {
 jBar3.setIndeterminate(false);
 Thread.currentThread().stop();
 }

 }
 }
  #2 (permalink)  
Antiguo 21/01/2012, 04:07
 
Fecha de Ingreso: enero-2012
Mensajes: 4
Antigüedad: 8 años
Puntos: 0
Respuesta: Leer .txt de gran peso.

Nadie tiene alguna sugerencia?, por favor necesito ayuda, me he quedado atascado ahi, ya he probado a subir la memoria de la maquina virtual por si fuera eso, pero todo sigue igual, empieza funcioando bien y a la mitad del fichero se queda parado, sin embargo con ficheros mas pequeños los lee hasta el final.
  #3 (permalink)  
Antiguo 21/01/2012, 05:00
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.773
Antigüedad: 15 años, 4 meses
Puntos: 454
Respuesta: Leer .txt de gran peso.

Revisa si te saltan exceptiones de OutOfMemory para ver si es o no problema de memoria

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 21/01/2012, 06:52
 
Fecha de Ingreso: enero-2012
Mensajes: 4
Antigüedad: 8 años
Puntos: 0
Respuesta: Leer .txt de gran peso.

Gracias chuidiang por contestar, el netbean no me salta ninguna excepacion pero se para el programa en ejecucion. Nunca he usado eclipse, desde que empece a aprender java he usado netbean como ide, pero he instalado el eclipse, he imporatdo como he podido mi proyecto y al ejecutarlo funciona correctamente, pero ahora me ecnuentro en el gran dilema que no se como compilarlo, he probado haciendo proyect>>build proyect y despues en files>>export lo he intentado como file jar y runnable jar. Una vez hecho esto, el archivo compilado como file jar, cuando lo intento ejecutar salta una excpecion en la maquina virtual, y si intento ejecutar el archivo compilado como rrunnable jar, no hace nada, solo piensa un momento pero no me abre la ventana prncipal. Agradeceria mucha culaquier ayuda que me pudieras prestar.
  #5 (permalink)  
Antiguo 21/01/2012, 07:07
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 10 años, 9 meses
Puntos: 306
Respuesta: Leer .txt de gran peso.

Si no es runnable jar no puedes ejecutarlo.

Seguramente te falla porque el manifest del jar es incorrecto, o las librerías/recursos de las que depende tu aplicación no están en el sitio correcto.

Cuando un jar no se ejecuta, lo mejor es poner trazas por el código para saber hasta donde llega. Puedes hacerlo con system.print o mejor todavía, usando Loggers.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #6 (permalink)  
Antiguo 21/01/2012, 07:59
 
Fecha de Ingreso: enero-2012
Mensajes: 4
Antigüedad: 8 años
Puntos: 0
Respuesta: Leer .txt de gran peso.

Gracias Xerelo, el problema esta en el netbean, no se que le pasa pero me para el codigo mitad de la ejecucion. He probado a llevar el jar a otra computadora que no tenga netbeans y funciona bien. Ya viendo eso raro, he desinstalado el netbeans de mi pc, y al probar mi jar ya funciona correctamente. Volvere a instalar el netbeans a ver que pasa. Gracias por vuestra ayuda.

Etiquetas: clase, jar, string, txt, aplicaciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:15.