¿Cómo guardar datos de un txt en arrays?
Veréis necesito ayuda en la lectura de un fichero y pasar datos a un array.
-No se sabe el tamaño del array, puede ser más pequeño o más grande dependiendo del fichero.
-Necesito separar o vincular lo que son números, tiempos y diálogos (son ficheros .srt)
Una vez tenga esto lo que haré será acceder a cada posición del array para leer los datos de la manera que desde el primer tiempo al segundo tendrá que leer el/los diálogo/s correspondente/s. Esto ya me apañaría yo.
Ejemplo fichero .srt:
1
00:00:51,960 --> 00:00:55,970//En estos tiempos se tiene que leer el diálogo de abajo
Esta es la Tierra en la época
En que los dinosaurios deambulaban...
2
00:00:56,300 --> 00:00:58,800
... Por un planeta verde y fértil.
...
22
00:02:47,330 --> 00:02:51,000//En este se tendría que leer dos líneas así que tampoco sabre de antemano las líneas de texto que se tendrán que leer
-Su corazón se está acelerando.
-Oye, Pete, es Truman.
Para almacenar el texto en un array he utilizado lo siguiente:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
class PruebaPrecio{
public static void main(String [] arg) {
File archivo = null;
FileReader fr = null;
ArrayList<String> lineas = new ArrayList<String>();
try {
archivo = new File ("C:/Documents and Settings/jfj/Escritorio/Armageddon.srt");
String linea;
fr = new FileReader (archivo);
BufferedReader br = new BufferedReader(fr);
while((linea=br.readLine())!=null){
lineas.add(linea);
}
System.out.print ("EL VECTOR ES : \n ");//MOSTRAR LOS DATOS DEL ARREGLO
for (int j = 0 ; j < lineas.size() ; j++){
linea = lineas.get(j);
System.out.print ( linea + "\n" );
}
}//FIN DEL TRY
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);}
}
Pero en este código hay un problema, no se me guarda todo el texto, se guarda a partir del tiempo 00:58:34,970.
A ver si me podéis echar una mano en esto.
-No se sabe el tamaño del array, puede ser más pequeño o más grande dependiendo del fichero.
-Necesito separar o vincular lo que son números, tiempos y diálogos (son ficheros .srt)
Una vez tenga esto lo que haré será acceder a cada posición del array para leer los datos de la manera que desde el primer tiempo al segundo tendrá que leer el/los diálogo/s correspondente/s. Esto ya me apañaría yo.
Ejemplo fichero .srt:
1
00:00:51,960 --> 00:00:55,970//En estos tiempos se tiene que leer el diálogo de abajo
Esta es la Tierra en la época
En que los dinosaurios deambulaban...
2
00:00:56,300 --> 00:00:58,800
... Por un planeta verde y fértil.
...
22
00:02:47,330 --> 00:02:51,000//En este se tendría que leer dos líneas así que tampoco sabre de antemano las líneas de texto que se tendrán que leer
-Su corazón se está acelerando.
-Oye, Pete, es Truman.
Para almacenar el texto en un array he utilizado lo siguiente:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
class PruebaPrecio{
public static void main(String [] arg) {
File archivo = null;
FileReader fr = null;
ArrayList<String> lineas = new ArrayList<String>();
try {
archivo = new File ("C:/Documents and Settings/jfj/Escritorio/Armageddon.srt");
String linea;
fr = new FileReader (archivo);
BufferedReader br = new BufferedReader(fr);
while((linea=br.readLine())!=null){
lineas.add(linea);
}
System.out.print ("EL VECTOR ES : \n ");//MOSTRAR LOS DATOS DEL ARREGLO
for (int j = 0 ; j < lineas.size() ; j++){
linea = lineas.get(j);
System.out.print ( linea + "\n" );
}
}//FIN DEL TRY
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);}
}
Pero en este código hay un problema, no se me guarda todo el texto, se guarda a partir del tiempo 00:58:34,970.
A ver si me podéis echar una mano en esto.
1 Respuesta
Respuesta de Angel Torres