Tengo una .archivo txt con el siguiente contenido:

1 1111 47
2 2222 92
3 3333 81

Me gustaría leer línea por línea y guardar cada palabra en variables diferentes.

Por ejemplo: Cuando leí la primera línea de «1 1111 47», me gustaría almacén de la primera palabra, «1» en la var_1, «1111» en var_2, y «47» en var_3. Entonces, cuando se pasa a la línea siguiente, los valores deben ser almacenados en el mismo var_1, var_2 y var_3 variables respectivamente.

Mi planteamiento inicial es el siguiente:

import java.io.*;
class ReadFromFile
{
    public static void main(String[] args) throws IOException
    {
        int i;
        FileInputStream fin;
        try
        {
            fin = new FileInputStream(args[0]);
        }
        catch(FileNotFoundException fex)
        {
            System.out.println("File not found");
            return;
        }
        do 
        {
            i = fin.read();
            if(i != -1) 
                System.out.print((char) i);
        } while(i != -1);

        fin.close();
    }
}

Amablemente me den sus sugerencias. Gracias

  • String[] vars=i.split(" ");var_1=vars[0];var_2=vars[1];var_3=vars[2];
InformationsquelleAutor Santosh V M | 2012-02-07

4 Comentarios

  1. 6
    public static void main(String[] args) throws IOException {
        File file = new File("/path/to/InputFile");
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        String line = null;
        while( (line = br.readLine())!= null ){
            //\s+ means any number of whitespaces between tokens
            String [] tokens = line.split("\s+");
            String var_1 = tokens[0];
            String var_2 = tokens[1];
            String var_3 = tokens[2];
        }
    }
    • ¿qué estás consultando aquí while( !(linea = br.readLine()).equals(«»))
    • la comprobación de si la otra línea que existe realmente. linea=br.readLine() devuelve null si no hay otras líneas. Así que estoy comprobando es againt != null. Si es cierto, significa que este es de hecho una línea, por lo que el trabajo
    • hay alguna manera de hacer este análisis sin usar las clases bufferedreader función?
    • Supongo que sí, pero va a ser más difícil, que va a hacer que determinar manualmente donde una nueva línea comienza en el archivo.
  2. 0
            try {
            BufferedReader fr = new BufferedReader(new InputStreamReader(new FileInputStream(file), "ASCII"));
            while(true)
            {
                String line = fr.readLine();
                if(line==null)
                    break;
                String[] words = line.split(" ");//those are your words
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }

    Espero que esto ayude!

  3. 0
    import java.io.*;
    import java.util.Scanner;
    class Example {
    public static void main(String[] args) throws Exception {
    File f = new File("main.txt");
    StringBuffer txt = new StringBuffer();
    FileOutputStream fos = new FileOutputStream(f);
    for (int i = 0; i < args.length; i++) {
    txt.append(args[i] + " ");
    }
    fos.write(txt.toString().getBytes());
    fos.close();
    FileInputStream fis = new FileInputStream("main.txt");
    InputStreamReader input = new InputStreamReader(fis);
    BufferedReader br = new BufferedReader(input);
    String data;
    String result = new String();
    StringBuffer txt1 = new StringBuffer();
    StringBuffer txt2 = new StringBuffer();
    File f1 = new File("even.txt");
    FileOutputStream fos1 = new FileOutputStream(f1);
    File f2 = new File("odd.txt");
    FileOutputStream fos2 = new FileOutputStream(f2);
    while ((data = br.readLine()) != null) {
    result = result.concat(data);
    String[] words = data.split(" ");
    for (int j = 0; j < words.length; j++) {
    if (j % 2 == 0) {
    System.out.println(words[j]);
    txt1.append(words[j] + " ");
    } else {
    System.out.println(words[j]);
    txt2.append(words[j] + " ");
    }
    }
    }
    fos1.write(txt1.toString().getBytes());
    fos1.close();
    fos2.write(txt2.toString().getBytes());
    fos2.close();
    br.close();
    }
    }

Dejar respuesta

Please enter your comment!
Please enter your name here