2012-04-21 16 views
5

Quiero leer un archivo de texto en una matriz. ¿Cómo puedo hacer eso?Leer el archivo de texto en una matriz

data = new String[lines.size]

que no quieren codificar 10 de la matriz.

BufferedReader bufferedReader = new BufferedReader(new FileReader(myfile)); 
String []data; 
data = new String[10]; // <= how can I do that? data = new String[lines.size] 

for (int i=0; i<lines.size(); i++) { 
    data[i] = abc.readLine(); 
    System.out.println(data[i]); 
} 
abc.close(); 
+1

¿Por qué usar una matriz? ¿Por qué no otros contenedores? – Mat

+0

porque mi profesor dijo que debe usar un array para almacenar los datos del archivo txt – heyman

+3

Great Teacher, Great Student – Lucifer

Respuesta

8

utilizar un ArrayList o un otra estructura de datos dinámica:

BufferedReader abc = new BufferedReader(new FileReader(myfile)); 
List<String> lines = new ArrayList<String>(); 

while((String line = abc.readLine()) != null) { 
    lines.add(line); 
    System.out.println(data); 
} 
abc.close(); 

// If you want to convert to a String[] 
String[] data = lines.toArray(new String[]{}); 
+3

¡funciona! ¡gracias! Además, mientras ((String line = abc.readLine()) no funciona, debe ser una línea String, mientras que ((line = abc.readLine()) puede funcionar:] – heyman

2

Utilice un List lugar. Al final, si lo desea, puede convertirlo de nuevo a String[].

BufferedReader abc = new BufferedReader(new FileReader(myfile)); 
List<String> data = new ArrayList<String>(); 
String s; 
while((s=abc.readLine())!=null) { 
    data.add(s); 
    System.out.println(s); 
} 
abc.close(); 
1

Si no se le permite hacerlo dtechs manera, y usar un ArrayList, Read 2 veces: en primer lugar, para obtener el número de líneas para declarar la matriz, y la segunda vez para llenarlo.

+0

Esa es de hecho la forma en que lo harías si solo están permitidas las matrices (o está programando en C o algo así) – dtech

+1

Alternativamente, podría burlarse de lo que 'List' hacer y aumentar el tamaño de la matriz según sea necesario, copiar todos los elementos utilizando arrayCopy() y evitar el costoso funcionamiento de leer el archivo dos veces (aunque si es un archivo pequeño, no será significativo). –

Cuestiones relacionadas