Rumah >pembangunan bahagian belakang >C++ >Bagaimana Cara Membaca 10 Baris Terakhir Fail Teks 10GB dalam C# dengan Cekap?
Mendapatkan semula 10 Baris Terakhir Fail Teks Besar-besaran (Melebihi 10GB)
Dalam bidang pemprosesan teks, cabaran biasa ialah mengekstrak beberapa baris terakhir fail teks yang sangat besar. Apabila berurusan dengan fail melebihi 10GB, pendekatan tradisional mungkin gagal. Artikel ini membentangkan penyelesaian yang berkesan untuk masalah ini menggunakan C# dan menawarkan coretan kod untuk menunjukkan pelaksanaannya.
Untuk mendapatkan semula 10 baris terakhir dengan cekap, strategi melibatkan melintasi fail ke belakang dari hujung. Oleh kerana bilangan baris mungkin berubah-ubah, kami secara berulang mencari ke belakang sehingga 10 pemisah baris ditemui. Setelah titik ini dicapai, kami membaca kandungan yang tinggal ke hadapan untuk menangkap 10 baris terakhir.
Pertimbangkan pelaksanaan berikut:
public static string ReadEndTokens(string path, Int64 numberOfTokens, Encoding encoding, string tokenSeparator) { int sizeOfChar = encoding.GetByteCount("\n"); byte[] buffer = encoding.GetBytes(tokenSeparator); using (FileStream fs = new FileStream(path, FileMode.Open)) { Int64 tokenCount = 0; Int64 endPosition = fs.Length / sizeOfChar; for (Int64 position = sizeOfChar; position < endPosition; position += sizeOfChar) { fs.Seek(-position, SeekOrigin.End); fs.Read(buffer, 0, buffer.Length); if (encoding.GetString(buffer) == tokenSeparator) { tokenCount++; if (tokenCount == numberOfTokens) { byte[] returnBuffer = new byte[fs.Length - fs.Position]; fs.Read(returnBuffer, 0, returnBuffer.Length); return encoding.GetString(returnBuffer); } } } // handle case where number of tokens in file is less than numberOfTokens fs.Seek(0, SeekOrigin.Begin); buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); return encoding.GetString(buffer); } }
Kod ini mengendalikan kes di mana bilangan baris dalam fail kurang daripada 10 dan melaraskan operasi baca dengan sewajarnya. Parameter pengekodan membenarkan penyesuaian berdasarkan pengekodan fail dan tokenSeparator boleh digunakan untuk mendapatkan semula elemen berturut-turut terakhir bagi pemisah yang berbeza.
Dengan menggunakan pendekatan ini, anda boleh mendapatkan semula 10 baris terakhir teks besar-besaran dengan berkesan. fail, memastikan pemprosesan yang cekap dan hasil yang tepat.
Atas ialah kandungan terperinci Bagaimana Cara Membaca 10 Baris Terakhir Fail Teks 10GB dalam C# dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!