Utilisation File.ReadLines
:
foreach (var line in File.ReadLines("file path"))
{
if (line.EndsWith(myWord))
{
outputEmails.Text += line + Environment.NewLine;
}
}
En interne, il utilise StreamReader
de sorte que vous ne chargez pas le fichier en mémoire avant de le lire.
Des performances encore meilleures peuvent être atteintes avec memory mapped files. Cela permet d'économiser des opérations de copie de mémoire supplémentaires lors de la lecture du contenu du fichier.
string line;
var stringBuilder = new StringBuilder();
using (var memoryMappedFile = System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(@"D:\Temp\test.txt"))
using (var viewStream = memoryMappedFile.CreateViewStream())
using (var streamReader = new StreamReader(viewStream))
{
while ((line = streamReader.ReadLine()) != null)
if (line.EndsWith(myWord))
stringBuilder.AppendLine(line);
}
outputEmails.Text = stringBuilder.ToString();
Et oui, comme les autres réponses disent, en utilisant StringBuilder
au lieu de concaténation de chaîne brute sera également un code plus rapide, surtout lorsque plusieurs lignes correspondent à condition de filtre.
lecteur de flux Utilisez au lieu de charger le fichier entier en mémoire –