Leer un archivo y crear otro a partir de tokens
De nuevo yo:
Mira tengo al archivo que tiene un buen de lineas de distintos tipos, pero tienen en común que comienzan con un formato como este :2008-09-29 16:27:50 > Y MÁS CONTENIDO.
Ahora lo que quiero hacer es separar esa cadena en dos utilizando un token con delimitador ">" y solo guardar la cadena siguiente en un nuevo archivo osea que ya no tenga fecha ni hora, hasta el momento ya pude separarla pero también se guarda con fecha y hr. Espero me puedas ayudar mi código es el siguiente:
import java.util.ArrayList;
import java.util.*;
import java.io.*;
import javax.swing.*;
class fconversionoct2 {
public static void main(String [] arg) {
File archivo = null;
FileReader fr = null;
String linea;
String b;
int a;
ArrayList lineas = new ArrayList();
try {
archivo = new File ("C:/archivo.log");
fr = new FileReader (archivo);
BufferedReader br = new BufferedReader(fr);
while((linea=br.readLine())!=null){ //inicio while 1
lineas.add(linea);}//fin while1
try { //crear archivo
String nombreArchivo= "C:\\nuevo2.log"; // Aqui se le asigna el nombre y
FileWriter fw = null; // la extension al archivo
fw = new FileWriter(nombreArchivo);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter salArch = new PrintWriter(bw);
for (int j = 0 ; j < lineas.size() ; j++)//recorrer el arraylist
{ //inicio for 1
linea = (String)lineas.get(j);
StringTokenizer st = new StringTokenizer( linea,">" );
while(st.hasMoreTokens()){ //inicio while2
b= st.nextToken();
salArch.print(b+"\t"+"\n");
}//fin while
}//fin for1
salArch.close();
}//fin try
catch (IOException ex) {
}//fin catch
JOptionPane.showMessageDialog( null, "OPERACION EXITOSA", "ANALISIS ", JOptionPane.INFORMATION_MESSAGE );
}//fin try1
catch(IOException e){
System.out.println(e);
}
finally{
try{ //el bloque finally se ejecuta siempre, por eso, si se cierra el fichero
if( fr != null){ //al final del primer try, y ha dado un error antes, pasaría
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
}
catch (IOException e){ // no tener permisos de lectura o que no exista - de valor null.
}
}
System.exit(0);} }
Por lo que he estado investigando necesito usar un StringBuffer o algo así pero pues no c como aplicarlo espero me puedas ayudar.
Mira tengo al archivo que tiene un buen de lineas de distintos tipos, pero tienen en común que comienzan con un formato como este :2008-09-29 16:27:50 > Y MÁS CONTENIDO.
Ahora lo que quiero hacer es separar esa cadena en dos utilizando un token con delimitador ">" y solo guardar la cadena siguiente en un nuevo archivo osea que ya no tenga fecha ni hora, hasta el momento ya pude separarla pero también se guarda con fecha y hr. Espero me puedas ayudar mi código es el siguiente:
import java.util.ArrayList;
import java.util.*;
import java.io.*;
import javax.swing.*;
class fconversionoct2 {
public static void main(String [] arg) {
File archivo = null;
FileReader fr = null;
String linea;
String b;
int a;
ArrayList lineas = new ArrayList();
try {
archivo = new File ("C:/archivo.log");
fr = new FileReader (archivo);
BufferedReader br = new BufferedReader(fr);
while((linea=br.readLine())!=null){ //inicio while 1
lineas.add(linea);}//fin while1
try { //crear archivo
String nombreArchivo= "C:\\nuevo2.log"; // Aqui se le asigna el nombre y
FileWriter fw = null; // la extension al archivo
fw = new FileWriter(nombreArchivo);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter salArch = new PrintWriter(bw);
for (int j = 0 ; j < lineas.size() ; j++)//recorrer el arraylist
{ //inicio for 1
linea = (String)lineas.get(j);
StringTokenizer st = new StringTokenizer( linea,">" );
while(st.hasMoreTokens()){ //inicio while2
b= st.nextToken();
salArch.print(b+"\t"+"\n");
}//fin while
}//fin for1
salArch.close();
}//fin try
catch (IOException ex) {
}//fin catch
JOptionPane.showMessageDialog( null, "OPERACION EXITOSA", "ANALISIS ", JOptionPane.INFORMATION_MESSAGE );
}//fin try1
catch(IOException e){
System.out.println(e);
}
finally{
try{ //el bloque finally se ejecuta siempre, por eso, si se cierra el fichero
if( fr != null){ //al final del primer try, y ha dado un error antes, pasaría
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
}
catch (IOException e){ // no tener permisos de lectura o que no exista - de valor null.
}
}
System.exit(0);} }
Por lo que he estado investigando necesito usar un StringBuffer o algo así pero pues no c como aplicarlo espero me puedas ayudar.
1 Respuesta
Respuesta de krlosnow
1