Rumah >Java >javaTutorial >Bagaimana untuk Mendapatkan Kembali Baris Terakhir Fail Teks Besar dengan Cekap?

Bagaimana untuk Mendapatkan Kembali Baris Terakhir Fail Teks Besar dengan Cekap?

Susan Sarandon
Susan Sarandonasal
2024-11-07 19:10:03738semak imbas

How to Efficiently Retrieve the Last Line of a Large Text File?

Mendapatkan Kembali Baris Terakhir Fail Teks Besar dengan Kecekapan

Apabila mengendalikan fail teks besar-besaran, mendapatkan semula baris akhir dengan cekap adalah penting. Akses rawak boleh memakan masa untuk fail besar, menjadikannya tidak praktikal. Sebaliknya, pertimbangkan penyelesaian ini:

Kembalikan Talian Bukan Kosong Terakhir:

Fungsi ekor di bawah dengan cepat mendapatkan semula baris bukan kosong terakhir fail tanpa memuatkan atau melintasi keseluruhan fail. Ia mencari ke penghujung fail dan membaca aksara ke belakang sehingga ia menemui pemisah baris, kemudian membina dan mengembalikan baris terakhir.

public String tail(File file) {
    // ...
    for (long filePointer = fileLength; filePointer != -1; filePointer--) {
        // ...
        sb.append((char) readByte);
    }
    // ...
}

Kembalikan N Baris Terakhir:

Jika anda memerlukan baris N terakhir, gunakan fungsi tail2. Ia menggunakan teknik yang sama, tetapi ia mengira pemisah baris untuk menentukan baris yang dikehendaki sebelum membalikkan dan membina output.

public String tail2(File file, int lines) {
    // ...
    for (long filePointer = fileLength; filePointer != -1; filePointer--) {
        line = line + 1;
        sb.append((char) readByte);
    }
    // ...
}

Panggil dan Gunakan:

File file = new File("D:\stuff\huge.log");
System.out.println(tail(file));
System.out.println(tail2(file, 10));

Pertimbangan Unikod:

Pelaksanaan menggunakan pembalikan aksara untuk membina semula baris. Walaupun secara amnya berkesan, ini boleh menyebabkan masalah pembalikan Unikod dengan aksara seperti aksen dan topi. Oleh itu, ujian menyeluruh adalah penting sebelum menggunakan pendekatan ini merentas pelbagai bahasa.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali Baris Terakhir Fail Teks Besar dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn