• Jueves 14 de Noviembre de 2024, 13:07

Autor Tema:  Problema Con La Carga De Un Archivo De Texto.  (Leído 1882 veces)

SteelX

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
Problema Con La Carga De Un Archivo De Texto.
« en: Viernes 15 de Abril de 2005, 17:46 »
0
hola a todos

estoy trabajando en java cierto texto y me encomendaron la realizacion de un programa que abra un fichero de n tamaño(mas de 10.000 lineas) y que linea por linea depure la informacion que contiene; la apertura del archivo y la cargada las realiza bien sin realizar la depuracion, el problema esta cuando realizo la depuracion al mintras que mantengo abierto el archivo, realiza el proceso hasta cierto numeros de lines y luego se detiene el codigo es el sigiente.

la clase que realiza la depuracin de la cadena es:
import java.io.*;

public class Cadena{
   
   String frase;
   
   public Cadena(){
      
      this.frase=new String();
      
   }
   public void init(){
      
      this.frase=" ";
      
   }
   
   public int buscar_Numero(String frases){
      int posicion=-1;
      String Numero=new String();
      char x='0';
      while(x<='9'){
         Numero=Character.toString(x);
         if((frases.indexOf(Numero))!=-1){
            posicion=frases.indexOf(Numero);
            return posicion;
         }
         x++;
      }
      
      return posicion;      
   }
   
   public  int buscar_Mayusculas(String frases){
      int posicion=-1;
      String letra=new String();
      char x='A';
      
      while(x<='Z'){
         
         letra=Character.toString(x);
         
         if((frases.indexOf(letra))!=-1){
            
            posicion=frases.indexOf(letra);
            return posicion;   
         }   
         
         x++;
      }
      
      return posicion;
   }
      
/////////////////////////////////////////////////////////////////   


public  int Autores(String frase){
   int a=0,b=0,w=0,fin=0,p=0;
   String subcadena=new String();
   a=frase.indexOf("^a");
   while(a!=-1){
      b=frase.indexOf("^b",a);
      w=frase.indexOf(" ",b);
      if(b!=-1){
         this.frase+=" "+frase.substring(a+2,b);
         
         a=frase.indexOf("^a",b);
         
         if(a!=-1){
            this.frase+=" "+frase.substring(b+2,a)+",";
         
            b=frase.indexOf("^b",a);
            w=frase.indexOf(" ",b);
         }else{
            p=frase.indexOf(".",b);
         
            if((w+2)==p){
               if(p!=-1){
                  this.frase+=" "+frase.substring(b+2,p+1);
         
                  fin=p+1;
               
               }else{
                  fin=buscar_Mayusculas(frase.substring(b+3,w));
                  if(fin!=-1){
                     fin+=3+b;
                     this.frase+=" "+frase.substring(b+2,fin);   
                  }else{
                     this.frase+=" "+frase.substring(b+2,w);
                     fin=w;
                  }
               }   
            }else{
               fin=buscar_Mayusculas(frase.substring(b+3,w));
               if(fin!=-1){
                  fin+=3+b;
                  this.frase+=" "+frase.substring(b+2,fin);   
               }else{
                  this.frase+=" "+frase.substring(b+2,w);
                  fin=w;
               
               }
                  
            }
            
         }
         
      }
         
            
   }


   this.frase+="; ";
   
   
   return fin;
   
   
}
////////////////////////////////////////////////////////////////////////////////////////
   public  int buscar_Mayusculas(String frases,char x){
      int posicion=-1;
      String letra=new String();
      
      letra=Character.toString(x);
      posicion=frases.indexOf(letra);
      return posicion;   
            
   }
//////////////////////////////////////////////////////////////////////////////////////////
   public  int buscar_Mayuscula(String frases,char x){
      int posicion=-1;
      String letra=new String();
      
      letra=Character.toString(x);
      posicion=frases.lastIndexOf(letra);
      return posicion;   
            
   }
   ///////////////////////////////////////////////////////////////////////////////////////////
public int Mayuscula_posmayor(String frase){
   int pos=0,sw=0,x=0,ps[]=new int[50];
   char a='A';
   while (sw!=-1){
      pos=this.buscar_Mayuscula(frase,a);
      if(pos!=-1){
         ps
  • =pos;

         x++;
      }
      if(a=='Z') sw=-1;
      a++;
   }
   pos=0;
   int temp=0;
   for(int y=0;y<x;y++){
      for (int z=y+1;z<x;z++){
         if(ps[y]<ps[z]){
            temp=ps[z];
            ps[z]=ps[y];
            ps[y]=temp;
         }
      }
   }
   
   pos=ps[0];
   return pos;
   
}
///////////////////////////////////////////////////////////////////////////////////////////
public int Mayuscula_posmenor(String frase){
   int pos=0,sw=0,x=0,ps[]=new int[50];
   char a='A';
   while (sw!=-1){
      pos=this.buscar_Mayusculas(frase,a);
      if(pos!=-1){
         ps
  • =pos;

         x++;
      }
      if(a=='Z') sw=-1;
      a++;
   }
   pos=0;
   int temp=0;
   for(int y=0;y<x;y++){
      for (int z=y+1;z<x;z++){
         if(ps[y]>ps[z]){
            temp=ps[z];
            ps[z]=ps[y];
            ps[y]=temp;
         }
      }
   }
   
   pos=ps[0];
   return pos;
   
}
/////////////////////////////////////////////////////////////////////////////////////////
public int buscar_numero(String frase,char x){
   int posicion=-1;
      String letra=new String();
      
      letra=Character.toString(x);
      posicion=frase.lastIndexOf(letra);
      return posicion;
}
//////////////////////////////////////////////////////////////////////////////////////

public int Numero_posmayor(String frase){
   int posicion=-1;
   int pos=0,sw=0,x=0,ps[]=new int[50];

   char a='0';
   while (sw!=-1){
      pos=this.buscar_numero(frase,a);
      if(pos!=-1){
         ps
  • =pos;

         x++;
      }
      if(a=='9') sw=-1;
      a++;
   }
   pos=0;
   int temp=0;
   for(int y=0;y<x;y++){
      for (int z=y+1;z<x;z++){
         if(ps[y]<ps[z]){
            temp=ps[z];
            ps[z]=ps[y];
            ps[y]=temp;
         }
      }
   }
   
   posicion=ps[0];
   
   return posicion;
}
//////////////////////////////////////////////////////////////////////////////////////
public int Numero_posmenor(String frase){
   int pos=0,sw=0,x=0,ps[]=new int[50];

   char a='0';
   while (sw!=-1){
      pos=this.buscar_Mayusculas(frase,a);
      if(pos!=-1){
         ps
  • =pos;

         x++;
      }
      if(a=='9') sw=-1;
      a++;
   }
   pos=0;
   int temp=0;
   for(int y=0;y<x;y++){
      for (int z=y+1;z<x;z++){
         if(ps[y]>ps[z]){
            temp=ps[z];
            ps[z]=ps[y];
            ps[y]=temp;
         }
      }
   }
   
   pos=ps[0];
   
   return pos;
   
}
//////////////////////////////////////////////////////////////////////////////////////
public int titulo_decripcion(String frase){
   int fin=0,m=0,w=0,a=0;
   fin=this.Numero_posmenor(frase);
   w=frase.indexOf(" ");
      
   if(fin!=-1){
      if(w!=-1){
      
         if(w<fin){
            this.frase+=" "+frase.substring(0,w);
      
         
            a=frase.indexOf(" ",w+1);
            
            while(a<fin){
               
            
               
               this.frase+=" "+frase.substring(w,a);
               
               w=a;
               
               a=frase.indexOf(" ",w+1);
               
            }
            this.frase+=" "+frase.substring(w,fin);
            w=this.Mayuscula_posmenor(frase.substring(fin));
            this.frase+=" "+frase.substring(fin,w+fin);
            fin+=w;
         
            
            m=this.Mayuscula_posmenor(frase.substring(fin+1));
            m+=1;
            
            this.frase+=" "+frase.substring(fin,fin+m);
            fin+=m;
            m=this.Numero_posmenor(frase.substring(fin));
            this.frase+=" "+frase.substring(fin,fin+m);
            fin+=m;
         }else{
            this.frase+=" "+frase.substring(0,fin);   
            this.frase+=" "+frase.substring(fin,fin+4);
            fin+=4;
            m=this.Mayuscula_posmenor(frase.substring(fin+1));
            m+=1;
            this.frase+=" "+frase.substring(fin,fin+m);
            fin+=m;
            m=this.Numero_posmenor(frase.substring(fin));
            this.frase+=" "+frase.substring(fin,fin+m);
            fin+=m;
         }   
      }else{
         this.frase+=" "+frase.substring(0,fin);
         this.frase+=" "+frase.substring(fin,fin+4);
         fin+=4;
         m=this.Mayuscula_posmenor(frase.substring(fin+1));
         m+=1;
         this.frase+=" "+frase.substring(fin,fin+m);
         fin+=m;
         m=this.Numero_posmenor(frase.substring(fin));
         this.frase+=" "+frase.substring(fin,fin+m);
         fin+=m;
      }
         
   }
   this.frase+="; ";

   
   return fin;
}
 ///////////////////////////////////////////////////////////////////////////////
public int codigo(String frase){
   int fin=0,m=0;
   

   m=this.Numero_posmayor(frase);
   this.frase+=" "+frase.substring(0,m+1);
   fin=m+1;
   this.frase+=";";

   return fin;
}
///////////////////////////////////////////////////////////////////////////////////////////
public int temas(String frase){
   int fin=0,m=0;
   
   m=this.Mayuscula_posmayor(frase);
   this.frase+=" "+frase.substring(0,m+1);
   fin=m+1;
   this.frase+=";";

   return fin;
}

}

/////////////////////////////////////////////////////////////////////////////////////////////

y la que controla la apertura del archivo es:


File name= fileChooser.getSelectedFile();
      if(name.exists()) {
         if (name.isFile()) {
            try {
               BufferedReader input= new BufferedReader(new FileReader (name));
               StringBuffer buffer= new StringBuffer();
               String text;
               areaTextos.setText("");
               int a=0,tamaño=0,y=0;
               while ((text=input.readLine()) !=null){
                  y++;
                  
                  a=text.indexOf("^a");
                  tamaño=text.length();
      
      
                  if(tamaño>100){
                     if(a!=-1){
                        //System.out.println("la cadena isis es:  "+isis+"\n\n\n");
                        w=caden.Autores(text);
                        w+=caden.titulo_decripcion(text.substring(w));
                        w+=caden.codigo(text.substring(w));
                        w+=caden.temas(text.substring(w));
               
                     }else{
                        w=caden.Mayuscula_posmenor(text);
                        if(w!=-1) w+=caden.titulo_decripcion(text.substring(w));
                        if(w!=-1) w+=caden.codigo(text.substring(w));
                        if(w!=-1) w+=caden.temas(text.substring(w));
                     }
                  buffer.append(caden.frase+ "\n");
                  caden.frase=" ";
                  }
               
            }
               System.out.println(y);
               areaTextos.append(buffer.toString());
            }catch (IOException ioException) {
               JOptionPane.showMessageDialog(null,"Error en el archivo", "Error",JOptionPane.ERROR_MESSAGE);
            }
         }
         else if (name.isDirectory ()) {
            String directory[] = name.list();
            areaTextos.append("\n\nContenido del directorio:\n");
            for (int i=0;i<directory.length; i++)
               areaTextos.append(directory +"\n");
         }
         else {
            JOptionPane.showMessageDialog(null," No existe "," Error ",JOptionPane.ERROR_MESSAGE);
         }
Inside the code

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema Con La Carga De Un Archivo De Texto.
« Respuesta #1 en: Viernes 15 de Abril de 2005, 22:49 »
0
Y CUAL ES EL ERRO QUE TE SALE?
Nadie se va a poner a revisar un codigo tan largo sino eres puntual con tus dudas.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

SteelX

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
Re: Problema Con La Carga De Un Archivo De Texto.
« Respuesta #2 en: Sábado 16 de Abril de 2005, 00:14 »
0
no hay error solo se bloque (pienso que bloquea la maquina virtual) y suspende la ejecucion; o se llena el buffer....
Inside the code