Como usar o leitor buffer em Java [fechado]

Desculpe se esta é uma pergunta óbvia, mas não consigo perceber. Estou a trabalhar numa missão para um curso de estruturas de dados. Envolve recolher dados de um simples .ficheiro dat. Nós nunca tínhamos usado nenhuma das opções de acesso a arquivos em Java antes, então o professor nos deu o código de trabalho para essa peça. Então uma classe chamada 'FileReadExample' cria um novo objeto de leitor buffer, abre um arquivo, e então é suposto expulsar um monte de dados sobre esse arquivo. Mas não posso. acesse qualquer um dos dados. Em um arquivo testMain separado, eu crio um novo objeto FileReadExample chamado fr e, em seguida, tentar imprimir coisas como fr.readLine() de lá, mas me diz que não existe tal método. Tenho a certeza que me está a escapar algo incrivelmente fácil.

editar-o Código dos Professores:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class FileReadExample
{
    public static void main(String[] args)
    {
        System.out.println("got here");
        try
        {
            BufferedReader in = new BufferedReader(new FileReader(new File("sample-file.dat")));
            System.out.println("File open successful!");

            int line = 0;
            for (String x = in.readLine(); x != null; x = in.readLine())
            {
                line++;
                System.out.println(x);
                if (line <= 3)
                {
                    String[] tokens = x.split(" ");
                    System.out.println("Number of tokens in line " + line + ": " + tokens.length);
                    System.out.println("The tokens are:");
                    for (String token : tokens)
                    {
                        System.out.println(token);
                    }
                }
                else
                {
                    String[] tokens = x.split("\\|");
                    System.out.println("Number of tokens in line " + line + ": " + tokens.length);
                    System.out.println("The tokens are:");
                    for (String token : tokens)
                    {
                        System.out.println(token);
                    }
                    Integer[] values = new Integer[tokens.length];
                    Integer sum = 0;
                    for (int i = 0; i < tokens.length; i++)
                    {
                        sum += Integer.parseInt(tokens[i]);
                    }
                    System.out.println("Sum: " + sum);
                }
            }
        } catch (IOException e)
        {
            System.out.println("File I/O error!");
        }
    }
}
Eu posso postar o código que o professor deu, mas não consigo descobrir como fazer a formatação certa nestes posts. Estou a ler bem que tenho de colocar quatro espaços à frente de todas as linhas para formatar o código correctamente aqui? Não há maneira de bloquear um monte de código ao mesmo tempo? Mais uma vez, sinto que me está a escapar algo extremamente fácil.

Obrigado.

Author: dumazy, 2013-04-28

2 answers

Tente isto para ler um ficheiro:

BufferedReader reader = null;

try {
    File file = new File("sample-file.dat");
    reader = new BufferedReader(new FileReader(file));

    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }

} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        reader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
 66
Author: Matthias Herlitzius, 2013-04-28 18:21:01
Tanto quanto sei, o fr é o objecto da sua classe FileReadExample. Por isso, é óbvio que não terá nenhum método como o fr.readLine () if you don't create one yourself. Em segundo lugar, acho que um construtor correcto da classe Bufferreader vai ajudá-lo a fazer a sua tarefa.
String str;
BufferedReader buffread = new BufferedReader(new FileReader(new File("file.dat")));
str = buffread.readLine();
.
.
buffread.close();
Isto deve ajudar-te.
 1
Author: Onkar Borgaonkar, 2013-04-28 18:07:13