Streamreader dengan Buffering Enhanced
menawarkan saiz penampan yang boleh dikonfigurasikan (ingkar hingga 1024 bait). Meningkatkan penampan ini secara dramatik dapat meningkatkan kelajuan baca: StreamReader.ReadLine()
<code class="language-csharp">const int BufferSize = 4096; // Increased buffer size for better performance using (var fileStream = File.OpenRead(fileName)) using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize)) { string line; while ((line = streamReader.ReadLine()) != null) { // Process the line } }</code>
menyediakan pendekatan yang lebih efisien dan sering lebih cepat untuk meleleh melalui garis: File.ReadLines()
<code class="language-csharp">foreach (var line in File.ReadLines(fileName)) { // Process the line }</code>
memuatkan keseluruhan fail ke dalam memori. Ini mudah tetapi menggunakan lebih banyak ingatan, menjadikannya kurang sesuai untuk fail yang sangat besar: File.ReadAllLines()
<code class="language-csharp">var lines = File.ReadAllLines(fileName); for (int i = 0; i < lines.Length; i++) { // Process line at index i }</code>
untuk menghuraikan baris dari keseluruhan kandungan fail secara amnya kurang cekap daripada kaedah di atas: String.Split()
<code class="language-csharp">// Less efficient - avoid this method if possible using (var reader = File.OpenText(fileName)) { string[] lines = reader.ReadToEnd().Split(new[] { "\r\n", "\n" }, StringSplitOptions.None); foreach (string line in lines) { //Process line } }</code>
sering memberikan keseimbangan penggunaan kelajuan dan memori yang baik. Walau bagaimanapun, menyesuaikan File.ReadLines
dalam BufferSize
mungkin menghasilkan hasil yang lebih baik untuk senario tertentu. Pertimbangkan kekangan memori anda dan corak akses semasa membuat pilihan anda. StreamReader
Atas ialah kandungan terperinci Bagaimana saya boleh mengoptimumkan bacaan fail teks line-by-line di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!