loo: Mit einem FileReader das Ende einer Zeile erkennen "\n"

Hi,

ich lese mit einem FileReader aus einer Datei ein, die folgendermaßen aussieht:

05.09.2002 15:05:45   0:34     1210800    0,3454
05.09.2002 15:03:25   0:14     05745249   0,1424
...

Der Code ist StandardCode aus einem Javabuch:

FileReader eingabestrom = new FileReader(fileChoose.getSelectedFile());
int gelesen;
String inhalt = "";
boolean ende = false;

while(!ende)
{
  gelesen = eingabestrom.read();
  if(gelesen == -1)
  ende = true;
  else
  inhalt = inhalt+ (char) gelesen;
}

Also werden alle Zeilen in dem String inhalt aneinander gehängt.
Da ich den Datei zeilenweise verarbeiten möchte (in eine Tabelle schreiben), war mein Gedanke, immer dann, wenn eine Zeile zu Ende ist, ein Zeichen an den String zu hängen, der in der Datei nicht vorkommt, z.B. "|". Daran könnte ich erkennen, wann eine Zeile vorbei
ist und dementsprechend einen neuen Datensatz eintragen.

Der FileReader liest leider nur zeichenweise ein.
Ist für ein Zeilenende ein bestimmter ASCII-Code reserviert, den ich abfragen könnte? Oder liege ich völlig falsch?

Danke schon einmal für alle Antworten

  1. Hallo loo,

    FileReader eingabestrom = new FileReader(fileChoose.getSelectedFile());
    int gelesen;
    String inhalt = "";
    boolean ende = false;

    while(!ende)
    {
      gelesen = eingabestrom.read();
      if(gelesen == -1)
      ende = true;
      else
      inhalt = inhalt+ (char) gelesen;
    }

    Der FileReader liest leider nur zeichenweise ein.

    Java ist nicht wirklich mein Gebiet, aber ich glaube
    gelesen = eingabestrom.readline()
    wird dir weiterhelfen.

    Ist für ein Zeilenende ein bestimmter ASCII-Code reserviert, den ich abfragen könnte? Oder liege ich völlig falsch?

    Zu entscheiden was ein Zeilenende ist, ist tatsächlich nicht trivial:
    Unter den UNIX'en besteht ein Zeilenende aus einem Newline (\n), Macs erwarten ein Carrige return (\r) und Windoze will beides (\n\r). Es ist deshalb am besten so etwas von der API handeln zu lassen (z.B. mit readline).

    Grüße,

    Peter

    p.s.: IRC ist bei weitem nicht so simple wie man meinen sollte :(

    1. Ist für ein Zeilenende ein bestimmter ASCII-Code reserviert, den ich abfragen könnte? Oder liege ich völlig falsch?
      Zu entscheiden was ein Zeilenende ist, ist tatsächlich nicht trivial:
      Unter den UNIX'en besteht ein Zeilenende aus einem Newline (\n), Macs erwarten ein Carrige return (\r) und Windoze will beides (\n\r). Es ist deshalb am besten so etwas von der API handeln zu lassen (z.B. mit readline).

      Grüße,

      Peter

      p.s.: IRC ist bei weitem nicht so simple wie man meinen sollte :(

      Hi, danke für Deine Antwort.

      ich hab schon geschaut, der FileReader hat die Methode readLine()nicht, der BufferedReader aber. Der erwartet ein Read-Object im Konstruktor -> sprich, er akzepiert nicht das File-Objekt, das ich dem FileReader mitgeben kann. Deswegen kann ich, glaub ich, nicht auf readLine() zurückgreifen, weil die auch nicht vererbt wird.

      In der while-SChleife frage ich ja char ab, deswegen dachte ich an einen ASCII-Code.

      Was bedeutet IRC?

      Gruß, loo

      1. Hallo loo,

        ich hab schon geschaut, der FileReader hat die Methode readLine()nicht, der BufferedReader aber. Der erwartet ein Read-Object im Konstruktor -> sprich, er akzepiert nicht das File-Objekt, das ich dem FileReader mitgeben kann. Deswegen kann ich, glaub ich, nicht auf readLine() zurückgreifen, weil die auch nicht vererbt wird.

        Du kannst aber, glaube ich, einen Buffer an die Datei binden:

        FileReader eingabedatei = new FileReader(fileChoose.getSelectedFile());
        BufferReader eingabestrom = new BufferdReader(eingabedatei);

        In der while-SChleife frage ich ja char ab, deswegen dachte ich an einen ASCII-Code.

        Halte ich aus schon genannten Gründen für unpraktisch. Außerdem dürfte eine Leseoperation auf einen Buffer von der Performance her besser sein.

        Was bedeutet IRC?

        Tschuldigung. War nicht auf dich bezogen (ich habe mich gestern im Internet Relay Chat versucht und bin auf der Fresse gelandet).

        Grüße,

        Peter

        1. Danke, probier ich aus.

          Gruß, loo

        2. Hi,

          klappt perfekt.
          Jetzt schmeiß ich die Strings der Reihe nach in einen Vector und übergeb den der DB-insert-Methode.

          Danke schön!