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
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
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
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
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);
}