Mendapatkan 10 Baris Terakhir Fail Teks Besar-besaran (Melebihi 10GB): Pendekatan C# yang Cekap
Apabila berurusan dengan fail teks besar yang melebihi 10GB, mengekstrak baris terakhir boleh menimbulkan cabaran prestasi. Begini cara untuk mencapai ini dengan berkesan menggunakan C#:
Pelaksanaan Kod:
Pendekatan umum ini membolehkan anda menentukan bilangan token untuk diekstrak (numberOfTokens), laluan fail (laluan), pengekodan (pengekodan), dan pemisah token (tokenSeparator):
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); } }
Cara Ia Berfungsi:
Oleh memanfaatkan pendekatan ini, anda boleh mengekstrak baris terakhir fail teks besar-besaran dengan cekap, menangani cabaran yang ditimbulkan oleh saiznya yang besar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan 10 Baris Terakhir dengan Cekap daripada Fail Teks 10GB dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!