Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda para separar un archivo

Estas en el tema de Ayuda para separar un archivo en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 21/04/2008, 22:46
 
Fecha de Ingreso: marzo-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Pregunta Ayuda para separar un archivo

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:

00000000100002000101001000000009001000000016005550 00000000000008900
00000000100002000101001000000009001000000017009550 00000000000008900
00000001600002000101001000000009001000000014005750 00000000000008900
00000038400002000101001000000009001000000016305880 00000000000008900
00000038400002000101001000000009001000000012000050 00000000000008900

Del cual deberemos obtener 3 archivos de la siguiente forma.

MTL000000001.dat, cuyo contenido será:
00000000100002000101001000000009001000000016005550 00000000000008900
00000000100002000101001000000009001000000017009550 00000000000008900

MTL000000016.dat, cuyo contenido será:
00000001600002000101001000000009001000000014005750 00000000000008900

MTL000000384.dat, cuyo contenido será:
00000038400002000101001000000009001000000016305880 00000000000008900
00000038400002000101001000000009001000000012000050 00000000000008900

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.

Código:
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.
  #2 (permalink)  
Antiguo 22/04/2008, 10:59
 
Fecha de Ingreso: mayo-2007
Mensajes: 210
Antigüedad: 17 años
Puntos: 8
Re: Ayuda para separar un archivo

Para que puedas ejecutar cada 20 segundos utiliza la clase Timer te pongo un ejemplo

Código PHP:
public class TestTimer {
    static class 
Time extends TimerTask{
        @
Override
        
public void run() {
            
System.out.println("hola!!"); [B]Lo que se ejecuta cada 20 segundos[/B]
        }
    }
    
    public static 
void main(String[] args) {
        
Timer t = new Timer("prueba");
        
t.schedule(new Time(), 020000); [B]Aqui indicas que se ejecute cada 20 segundos[/B]
    }

salu2
  #3 (permalink)  
Antiguo 22/04/2008, 11:27
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 16 años, 3 meses
Puntos: 6
Re: Ayuda para separar un archivo

bueno aca te dejo un ejemplito para cortar una cadena de string q es lo q tienes tu al leer linea a linea

public String cortarNombreArchivo(String path){
if(path.lastIndexOf("/") != -1){
return path.substring(path.lastIndexOf("/") + 1);
}else{
return path.substring(path.lastIndexOf("\\") + 1);
}
}

tal vez no es el mejor ejemplo que puedo darte pero estoy segro de que te guiara

saludos
__________________
"La magia no existe, la programacion si"

A/P Agustin Sivoplas
[email protected]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:29.