Java - Ayuda para separar un archivo

   
Vista:

Ayuda para separar un archivo

Publicado por Oscar Moreno (2 intervenciones) el 22/04/2008 06:51:09
Que tal!

Realmente necesito una mano, he avanzado bastante con java, pero muchas cosas aún me fallan tal es el caso siguiente, resulta que tengo un aplicación que lee un archivo plano de texto, en cuyas líneas se almacenan de forma ordenada algunos datos, por lo que necesito extraer esos datos (más bien las líneas), agrupar las que son idénticas en los primeros nueve caracteres y almacenarlas en un archivo, y hacer esto con cada línea del archivo, por ejemplo, tengo las siguientes líneas en el archivo:

0000000010000200010100100000000900100000001600555000000000000008900
0000000010000200010100100000000900100000001700955000000000000008900
0000000160000200010100100000000900100000001400575000000000000008900
0000003840000200010100100000000900100000001630588000000000000008900
0000003840000200010100100000000900100000001200005000000000000008900

Del cual deberemos obtener 3 archivos de la siguiente forma.

MTL000000001.dat, cuyo contenido será:
0000000010000200010100100000000900100000001600555000000000000008900
0000000010000200010100100000000900100000001700955000000000000008900

MTL000000016.dat, cuyo contenido será:
0000000160000200010100100000000900100000001400575000000000000008900

MTL000000384.dat, cuyo contenido será:
0000003840000200010100100000000900100000001630588000000000000008900
0000003840000200010100100000000900100000001200005000000000000008900

En una segunda cuestión quisiera hacer que cada 20 segundos esta aplicación se ejecute (cosa que he intentado con un Thread sin éxito), ya que el archivo de texto lo vuelvo a jalar con otra aplicación exe aproximadamente cada 20 segs., a continuación pongo el código que he estado trabajando y que requiere de su experta ayuda.

import java.io.*;
import java.util.*;

public class Recupera extends Thread
{
private boolean running = true;

public Recupera() {}

public void run() //ESTA PARTE DEL CÓDIGO EN REALIDAD NO HACE NADA, NO SÉ CÓMO HACERLA FUNCIONAR
{
while (running)
{
try
{
Thread.sleep(20000);
}
catch (InterruptedException e)
{
running = false;
}
}
}

public static void main(String[] args) throws Exception
{
Process process = Runtime.getRuntime().exec("SWC_ETH.EXE Enviar.anw");
new Recupera().start();
copyFile();
process.destroy(); //AQUÍ EL POCESO SE DESTRUYE Y YA NO PUEDO LOGRAR QUE VUELVA A COMENZAR
}

public static void copyFile() throws Exception
{
//Abrimos el archivo del cual extraeremos los datos
BufferedReader in = new BufferedReader(new FileReader("boka.txt"));
//Creamos el archivo destino
BufferedWriter out = new BufferedWriter(new FileWriter(NOMBRE DE LOS ARCHIVOS)); //NO SÉ COMO HACER QUE SE GENEREN LOS MULTIPLES ARCHIVOS QUE SE REQUIEREN

//Leemos línea por línea el archivo origen
String p = System.getProperty("line.separator");
String s = in.readLine();
if (s != null)
{
while ((s = in.readLine()) != null)
{
// Da formato a la linea leida y la escribe en la salida.
out.write(plstbuilder(s) + p);
}
}
out.close();
in.close();
}

/**
* Da formato a str
* @param str la cadena a dar formato
* @return la cadena original con un nuevo formato
*/
public static String plstbuilder(String str)
{
Aquí le doy formato a las líneas que se copian, pero por razones de espacio no coloque esta función,
Pero esta función ya esta probada y funciona sin problemas
}
}

Como se darán cuenta no son tan buen programador como ustedes pero por eso recurro a ustedes, de verdad lo necesito, confió en que podrán ayudarme.

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda para separar un archivo

Publicado por Luis Castro (80 intervenciones) el 22/04/2008 21:12:58
Si asi has ideado la solucion
hay dos formas de usar los hilos heradando como tu lo hace o implementando todos los metodos abstractos de la clase Runnable
en ese caso como esta en este codigo de ejemplo
primero que nada tienes que implemantar la case
//public class Bloqueador implements Runnable {

public Bloqueador( )
{
start(); // inicamos el proceso o hilo



}

private void start()
{
hilo = new Thread(this); // apuntamos a la clase runnable
hilo.setPriority(Thread.MIN_PRIORITY);// lo purdes ignorar
hilo.setName("taskkill taskmgr.exe ")// lo puedes ignorar;
hilo.start();


}// fin de star

public void run() {
Thread me = Thread.currentThread();

while(hilo== me ){

try {
Thread.sleep(500);
//JOptionPane.showMessageDialog(null,"hilo cada 1/2 segundo");
killAdministrador() ;// es un metodo que uso para eleminar un proceso

} catch (InterruptedException e)
{

JOptionPane.showMessageDialog(null,e+" "+ this.getClass().getName()+"Metodo run");
return;
}

}

} // fin de run
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar