Crear un archivo a partit de otro utilizando tokens(2)
Hola de nuevo yo, mira mi programa al igual que el anterior tiene que leer un archivo, y a partir de un token limitado crea uno nuevo, lo que hice fue crear una función dentro de una clase externa(NUEVO1), y después lo mando a llamar desde la clase principal llamada NUEVO2, compilo los dos y esta perfecto, pero ejecuto el principal y me manda lo siguiente:
at java.util.StringTokenizer.(init)(StringTokenizer.java.119)
at java.util.StringTokenizer.(init)(StringTokenizer.java. 135)
at Nuevo1.enviar(Nuevo1.java:25)
at Nuevo.main(Nuevo2.java:6)
la clase externa contiene el siguiente código:
public class Nuevo1{
public File archivo = null;
public FileReader fr = null;
public String p[]={ "$GPGGA","$GPRMC","$GPGSV","$GPGSA","$GPVTG","$GPGLL","$GPIOP","$GPGSM","$GPAREA","$GPEVENT"};
public String linea,b;
public int c=0,a;
public StringTokenizer st;
//INICIO DE METODOS
public void enviar(){// metodo enviar
try {//inicio try1
archivo = new File ("C:\\archivo.log");
fr = new FileReader (archivo);
BufferedReader br = new BufferedReader(fr);
st = new StringTokenizer( linea,">" );
while(st.hasMoreTokens()){ //token
a= st.countTokens();
b= st.nextToken();
for ( int r = 0; r< p.length; r++ ) {//for
if(b.startsWith(p[r]))
{ //leer archivo
String nombreArchivo= "C:\\PROTOCOLOS\\archivo2.log"; // Aqui se le asigna el nombre y
FileWriter fw = null; // la extension al archivo
try { //inico try2
fw = new FileWriter(nombreArchivo);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter salArch = new PrintWriter(bw);
while((linea=br.readLine())!=null)
for ( int c = 0; c< p.length; c++ )
if( linea.startsWith( p[c]))
salArch.print("\n " + linea+" \n ");
salArch.close();
JOptionPane.showMessageDialog( null, "OPERACION EXITOSA", "ANALISIS ", JOptionPane.INFORMATION_MESSAGE );
}//fin try2
catch (IOException ex) { //inico catch
} //fin catch
}//fin leer archivo
}//fin del for
}//fin token
}//fin try1
catch(IOException e){//inicio catch2
System.out.println(e);}//fin catch2
finally{//inicio finally
try{ //el bloque finally se ejecuta siempre, por eso, si se cierra el fichero,INICIO TRY3
if( fr != null){ //al final del primer try, y ha dado un error antes, pasaría, INICIO IF
fr.close(); //al 1er catch y luego saldría, dejándolo abierto. Es conveniente
} //cerrarlo aquí, comprobando que no sea -por un error anterior, como, FIN IF
}//FIN TRY3
catch (IOException e){ // no tener permisos de lectura o que no exista - de valor null.INICIO CATCH3
}//FIN CATCH 3
}// FIN FINALLY
}//FIN del metodo
}//FIN CLASE EXTERNA
y la principal:
class Nuevo2{
public static void main (String args [])
{
Nuevo1 Datos=new Nuevo1(); //LLamamos a los métodos
Datos.enviar();
System.exit (0); }
}
No se cual es el problema pues seguí el orden de los corchetes, espero me ayudes y gracias
:)
at java.util.StringTokenizer.(init)(StringTokenizer.java.119)
at java.util.StringTokenizer.(init)(StringTokenizer.java. 135)
at Nuevo1.enviar(Nuevo1.java:25)
at Nuevo.main(Nuevo2.java:6)
la clase externa contiene el siguiente código:
public class Nuevo1{
public File archivo = null;
public FileReader fr = null;
public String p[]={ "$GPGGA","$GPRMC","$GPGSV","$GPGSA","$GPVTG","$GPGLL","$GPIOP","$GPGSM","$GPAREA","$GPEVENT"};
public String linea,b;
public int c=0,a;
public StringTokenizer st;
//INICIO DE METODOS
public void enviar(){// metodo enviar
try {//inicio try1
archivo = new File ("C:\\archivo.log");
fr = new FileReader (archivo);
BufferedReader br = new BufferedReader(fr);
st = new StringTokenizer( linea,">" );
while(st.hasMoreTokens()){ //token
a= st.countTokens();
b= st.nextToken();
for ( int r = 0; r< p.length; r++ ) {//for
if(b.startsWith(p[r]))
{ //leer archivo
String nombreArchivo= "C:\\PROTOCOLOS\\archivo2.log"; // Aqui se le asigna el nombre y
FileWriter fw = null; // la extension al archivo
try { //inico try2
fw = new FileWriter(nombreArchivo);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter salArch = new PrintWriter(bw);
while((linea=br.readLine())!=null)
for ( int c = 0; c< p.length; c++ )
if( linea.startsWith( p[c]))
salArch.print("\n " + linea+" \n ");
salArch.close();
JOptionPane.showMessageDialog( null, "OPERACION EXITOSA", "ANALISIS ", JOptionPane.INFORMATION_MESSAGE );
}//fin try2
catch (IOException ex) { //inico catch
} //fin catch
}//fin leer archivo
}//fin del for
}//fin token
}//fin try1
catch(IOException e){//inicio catch2
System.out.println(e);}//fin catch2
finally{//inicio finally
try{ //el bloque finally se ejecuta siempre, por eso, si se cierra el fichero,INICIO TRY3
if( fr != null){ //al final del primer try, y ha dado un error antes, pasaría, INICIO IF
fr.close(); //al 1er catch y luego saldría, dejándolo abierto. Es conveniente
} //cerrarlo aquí, comprobando que no sea -por un error anterior, como, FIN IF
}//FIN TRY3
catch (IOException e){ // no tener permisos de lectura o que no exista - de valor null.INICIO CATCH3
}//FIN CATCH 3
}// FIN FINALLY
}//FIN del metodo
}//FIN CLASE EXTERNA
y la principal:
class Nuevo2{
public static void main (String args [])
{
Nuevo1 Datos=new Nuevo1(); //LLamamos a los métodos
Datos.enviar();
System.exit (0); }
}
No se cual es el problema pues seguí el orden de los corchetes, espero me ayudes y gracias
:)
1 Respuesta
Respuesta de krlosnow