Que tal a todos!
Tengo la siguiente pregunta, resulta que tengo un archivo txt con el siguiente contenido
Código PHP:
0000000010000200010100100000000900100000001600555000000000000008900
0000000010000200010100100000000900100000001800655000000000000008900
0000000010000200010100100000000900100000001700955000000000000008900
0000000160000200010100100000000900100000001400575000000000000008900
0000000160000200010100100000000900100000001100505000000000000008900
0000000160000200010100100000000900100000001200515000000000000008900
0000000320000200010100100000000900100000001800559000000000000008900
0000000320000200010100100000000900100000001200551000000000000008900
0000000320000200010100100000000900100000001300155000000000000008900
0000000320000200010100100000000900100000001600655000000000000008900
0000000320000200010100100000000900100000001900535000000000000008900
0000000320000200010100100000000900100000001700551000000000000008900
0000000640000200010100100000000900100000001610055000000000000008900
0000000640000200010100100000000900100000001650550000000000000008900
0000000640000200010100100000000900100000001100585000000000000008900
0000000640000200010100100000000900100000001700523000000000000008900
0000000960000200010100100000000900100000003600500000000000000008900
0000001280000200010100100000000900100000001690152000000000000008900
0000001280000200010100100000000900100000001250545000000000000008900
0000001280000200010100100000000900100000002600567000000000000008900
0000001280000200010100100000000900100000001800300000000000000008900
0000001500000200010100100000000900100000007600505000000000000008900
lo que requiero hacer es leer línea por línea y agrupar las líneas que sean iguales en los primeros 9 caracteres y separarlas del resto, colocandolas en nuevos archivos, es decir, por ejemplo, con los datos anteriores debería tener 7 archivos y el primero de ellos deberá contener las líneas
Código PHP:
0000000010000200010100100000000900100000001600555000000000000008900
0000000010000200010100100000000900100000001800655000000000000008900
0000000010000200010100100000000900100000001700955000000000000008900
y así sucesivamente hasta llegar a la última línea y guardarla en el último archivo, la forma de nombrarlos seria por los primeros 9 digitos, por ejemplo el primer archivo sería 000000001.txt, el segundo 000000016.txt, .... , y el último será 000000150.txt
Hay un código que he empleado anteriormente, pero sirve para copiar el contenido de un archivo a otro y les pasa un formato de extracción de datos en cada línea, el cual es el siguiente:
Código:
import java.io.*;
import java.util.*;
public class Recupera
{
public static void main(String[] args)
{
try
{
//Abrimos el archivo del cual extraeremos los datos
BufferedReader in = new BufferedReader(new FileReader("boka.txt"));
//Creamos el archive destino
BufferedWriter out = new BufferedWriter(new FileWriter(CONSTRUIR LOS DISTINTOS ARCHIVOS));
//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)
{
//Escribimos cada línea en el archivo destino
out.write(plstbuilder(s) + p);
}
}
out.close();
in.close();
}
catch (IOException ex) {}
}
/**
* 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)
{
String plstrow = null;
String plu, tipo, cad, desc, monto, hora, fecha;
plu = str.substring(10, 16);
tipo = str.substring(19,20);
precio = str.substring(39, 45);
monto = str.substring(50, 59);
Calendar calendario = Calendar.getInstance();
int day, month, year, hour, minute, second;
day = calendario.get(Calendar.DAY_OF_MONTH);
String dia = String.valueOf(day);
if (dia.length() < 2)
dia = "0" + dia;
month = calendario.get(Calendar.MONTH);
String mes = String.valueOf(month);
if (mes.length() < 2)
mes = "0" + mes;
year = calendario.get(Calendar.YEAR);
hour = calendario.get(Calendar.HOUR_OF_DAY);
minute = calendario.get(Calendar.MINUTE);
second = calendario.get(Calendar.SECOND);
String hor = String.valueOf(hour);
int lon = hor.length();
if (lon < 2)
hor = "0" + hor;
hora = hor + ":" + minute + ":" + second;
fecha = dia + "/" + mes + "/" + year;
plstrow = plu + ";" + tipo + ";" + String.valueOf(Integer.parseInt(monto)) + ";" + hora + ";" + fecha + ";";
return plstrow;
}
}
Alguna sugerencia para resolver este enigma, gracias.
Un saludo.