So ermitteln Sie effizient die Anzahl der Zeilen in einer Java-Datei
Das Zählen der Anzahl der Zeilen in einer Datei ist eine häufige Aufgabe in der Programmierung . In Java besteht ein gängiger Ansatz darin, die Datei Zeile für Zeile bis zum Ende zu lesen, was bei großen Dateien ineffizient sein kann.
Eine optimiertere Lösung ist die Verwendung der countLinesOld-Methode, die die Datei byteweise liest Byte und zählt die Vorkommen des Zeilenumbruchzeichens (n). Dieser Ansatz ist deutlich schneller als das zeilenweise Lesen der Datei, insbesondere bei großen Dateien.
public static int countLinesOld(String filename) throws IOException { InputStream is = new BufferedInputStream(new FileInputStream(filename)); try { byte[] c = new byte[1024]; int count = 0; int readChars = 0; boolean empty = true; while ((readChars = is.read(c)) != -1) { empty = false; for (int i = 0; i < readChars; ++i) { if (c[i] == '\n') { ++count; } } } return (count == 0 && !empty) ? 1 : count; } finally { is.close(); } }
Für eine noch schnellere Leistung sollten Sie jedoch die Verwendung der countLinesNew-Methode in Betracht ziehen, die Optimierungen wie das Entrollen der Schleife und das Caching nutzt die Zeilenanzahl für jeden 1024-Byte-Block der Datei.
public static int countLinesNew(String filename) throws IOException { InputStream is = new BufferedInputStream(new FileInputStream(filename)); try { byte[] c = new byte[1024]; int readChars = is.read(c); if (readChars == -1) { // bail out if nothing to read return 0; } // make it easy for the optimizer to tune this loop int count = 0; while (readChars == 1024) { for (int i=0; i<1024;) { if (c[i++] == '\n') { ++count; } } readChars = is.read(c); } // count remaining characters while (readChars != -1) { for (int i=0; i<readChars; ++i) { if (c[i] == '\n') { ++count; } } readChars = is.read(c); } return count == 0 ? 1 : count; } finally { is.close(); } }
Diese optimierten Methoden bieten erhebliche Geschwindigkeitsverbesserungen gegenüber dem standardmäßigen readLines-Ansatz. Damit eignen sie sich ideal zum effizienten Zählen von Zeilen in großen Dateien.
Das obige ist der detaillierte Inhalt vonWas ist der effizienteste Weg, Zeilen in einer Java-Datei zu zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!