Zeilen zählen in einem Textfile

Status
Nicht offen für weitere Antworten.

Barret

Mitglied
Also, ich würde gerne einen Binary Search direkt in einem Textfile durchführen, um das tun zu können müsste ich aber in die Zeilen zählen und in die Mitte des Files springen. bei einem kleinen file wäre das mit einer Schleife wie der hier kein problem:

Code:
FileConnection fconn = (FileConnection)Connector.open(url, Connector.READ);
if (!fconn.exists()) {
	fconn.create();
}
InputStream is = (InputStream)fconn.openInputStream();
int count = 0;
while(is.read() != -1){
     count++;
}

// da 67 Zeichen pro Zeile
zeilen = (count/67);



Leider muss es aber bei einem riesigen Textfile funktionieren, .. gibt es eine einfachere bzw. performantere möglichkeit die Zeilen zu zählen, und in die Mitte des Files zu springen?
 
es gibt File.lenth() für lokale Dateien,
für Streams aus dem Netzwerk, HTTP und so, wird am Anfang die Länge hoffentlich angegeben sein,

Zeilen klingt mehr nach Suche nach Zeilenumbrüchen, length() durch 67 ist ne gute Abkürzung,
ansonsten kann es da logischerweise nix anderes geben, als jedes Zeichen anzuschauen und zu zählen,
mit einem BufferedInputStream evtl. schneller,

grundsätzlich was anderes wäre es, wenn man nebenbei eine andere Informationsmenge hätte, z.B. eine Indexdatei, die die Anzahl und Position aller Zeilenumbrüche verrät,
um die zu erstellen muss man aber auch irgendwann mal die Datei analysieren,
das was dein Programm macht, entspicht dem quasi
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.

Zurück
Oben