Cara Menentukan Bilangan Baris dalam Fail Java dengan Cekap
Mengira bilangan baris dalam fail adalah tugas biasa dalam pengaturcaraan . Di Java, satu pendekatan biasa ialah membaca fail baris demi baris sehingga sampai ke penghujung, yang boleh menjadi tidak cekap untuk fail besar.
Penyelesaian yang lebih dioptimumkan ialah menggunakan kaedah countLinesOld, yang membaca bait fail dengan bait dan mengira kejadian aksara baris baharu (n). Pendekatan ini jauh lebih pantas daripada membaca fail baris demi baris, terutamanya untuk fail besar.
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(); } }
Walau bagaimanapun, untuk prestasi yang lebih pantas, pertimbangkan untuk menggunakan kaedah countLinesNew, yang memanfaatkan pengoptimuman seperti membuka gelung dan caching kiraan baris untuk setiap ketulan 1024-bait fail.
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(); } }
Kaedah yang dioptimumkan ini menyediakan peningkatan kelajuan yang ketara berbanding pendekatan readLines standard, menjadikannya ideal untuk mengira baris dalam fail besar dengan cekap.
Atas ialah kandungan terperinci Apakah Cara Paling Cekap untuk Mengira Baris dalam Fail Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!