Membaca Fail Teks Besar dalam .NET: Meneroka Pendekatan Cekap
Bekerja dengan fail teks yang besar memerlukan teknik yang cekap untuk mengendalikan jumlah data yang banyak . Satu senario biasa ialah membaca fail teks 1 GB baris demi baris. Panduan ini meneroka kaedah optimum untuk tugasan ini.
StreamReader.ReadLine()
StreamReader ialah pendekatan biasa untuk membaca fail teks. Kaedah ReadLine() membenarkan lelaran melalui baris fail. Walau bagaimanapun, untuk fail besar, kaedah ini boleh menjadi agak perlahan, kerana ia membaca keseluruhan fail ke dalam memori.
MemoryMappedFile
Jika tersedia dalam .NET 4.0 atau lebih baru, MemoryMappedFile ialah kelas disyorkan yang direka khusus untuk mengendalikan fail besar. Ia memasukan fail ke dalam memori, membenarkan akses terus kepada kandungannya tanpa memuatkan keseluruhan fail ke dalam memori.
Contoh Kod
Kod contoh berikut menggambarkan cara menggunakan MemoryMappedFile untuk membaca teks yang besar fail:
using System.IO.MemoryMappedFiles; ... // Open the file MemoryMappedFile mappedFile = MemoryMappedFile.CreateFromFile("largeFile.txt", FileMode.Open, null, 1024 * 1024 * 1024); // 1 GB buffer // Create a view of the file MemoryMappedViewAccessor accessor = mappedFile.CreateViewAccessor(); // Read the file byte[] lineBytes = new byte[1024]; for (long i = 0; i < mappedFile.Length; i += 1024) { accessor.ReadArray(i, lineBytes, 0, 1024); Console.WriteLine(Encoding.UTF8.GetString(lineBytes)); }
Kesimpulan
Apabila berurusan dengan fail teks yang besar, MemoryMappedFile menawarkan penyelesaian yang lebih cekap berbanding dengan StreamReader.ReadLine(), membenarkan akses terus kepada data tanpa memuatkan keseluruhan fail ke dalam memori. Atas sebab keserasian, StreamReader.ReadLine() kekal sebagai pilihan yang berdaya maju untuk versi terdahulu .NET.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Fail Teks Besar dengan Cekap dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!