it-swarm.com.de

So verwenden Sie den gepufferten Reader in Java

Sorry, wenn dies eine offensichtliche Frage ist, aber ich scheine es nicht zu verstehen. Ich arbeite an einer Aufgabe für einen Kurs für Datenstrukturen. Dabei werden Daten aus einer einfachen DAT-Datei abgerufen. Wir hatten noch nie zuvor eine der Optionen für den Dateizugriff in Java verwendet. Daher gab uns der Professor gerade den Arbeitscode für diesen Teil an. Eine Klasse mit dem Namen 'FileReadExample' erstellt also ein neues gepuffertes Reader-Objekt, öffnet eine Datei und soll dann eine Reihe von Daten über diese Datei aussortieren. Ich kann jedoch auf keine der Daten zugreifen. In einer separaten testMain-Datei erstelle ich ein neues FileReadExample-Objekt mit dem Namen fr und versuche dann, Dinge wie fr.readLine () von dort aus auszudrucken, aber es sagt mir, dass es keine solche Methode gibt. Ich bin sicher, ich vermisse etwas erstaunlich leichtes. 

EDIT - Der Professorenkodex:

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

Ich kann den Code posten, den der Professor gegeben hat, aber ich kann nicht herausfinden, wie man die Formatierung in diesen Posts richtig gestaltet. Lese ich richtig, dass ich vor jeder Zeile vier Leerzeichen einfügen muss, um die Code-Formatierung hier richtig zu erhalten? Es gibt keine Möglichkeit, eine ganze Reihe von Code gleichzeitig zu blockieren. Wieder fühle ich mich, als würde mir etwas extrem leichtes fehlen. 

Vielen Dank.

36

Versuchen Sie folgendes, um eine Datei zu lesen:

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

Soweit ich verstehe, ist fr das Objekt Ihrer FileReadExample-Klasse. Es ist also offensichtlich, dass es keine Methode wie fr.readLine () geben wird, wenn Sie selbst keine erstellen.

zweitens denke ich, dass ein korrekter Konstruktor der BufferedReader-Klasse Ihnen bei Ihrer Aufgabe helfen wird.

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

das sollte dir helfen.

0