Как использовать Buffered Reader в Java

Извините, если это очевидный вопрос, но я не могу его понять. Я работаю над заданием для курса Структуры данных. Это включает извлечение данных из простого файла.dat. Мы никогда раньше не использовали ни один из параметров доступа к файлам в Java, поэтому профессор просто дал нам рабочий код для этой части. Таким образом, класс с именем FileReadExample создает новый буферизованный объект чтения, открывает файл и затем должен удалить кучу данных об этом файле. Но я не могу получить доступ к каким-либо данным вообще. В отдельном файле testMain я создаю новый объект FileReadExample с именем fr, а затем пытаюсь распечатать оттуда такие вещи, как fr.readLine(), но он говорит мне, что такого метода нет. Я уверен, что упускаю что-то невероятно легкое.

РЕДАКТИРОВАТЬ - Код профессора:

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!");
        }
    }
}

Я могу опубликовать код, который дал профессор, но я не могу понять, как правильно настроить форматирование в этих сообщениях. Правильно ли я понимаю, что мне нужно поставить четыре пробела перед каждой строкой, чтобы получить правильное форматирование кода здесь? Нет способа просто заблокировать целый пакет кода одновременно? Опять же, я чувствую, что упускаю что-то чрезвычайно легкое там.

Благодарю.

2 ответа

Попробуйте это прочитать файл:

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();
    }
}

Насколько я понимаю, fr является объектом вашего класса FileReadExample. Поэтому очевидно, что у него не будет никакого метода, такого как fr.readLine(), если вы не создадите его самостоятельно.

во-вторых, я думаю, что правильный конструктор класса BufferedReader поможет вам выполнить вашу задачу.

String str;
BufferedReader buffread = new BufferedReader(new FileReader(new File("file.dat")));
str = buffread.readLine();
.
.
buffread.close();

это должно помочь вам.

Другие вопросы по тегам