Maison >développement back-end >C++ >Comment puis-je lire efficacement des fichiers texte volumineux dans .NET ?

Comment puis-je lire efficacement des fichiers texte volumineux dans .NET ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-05 10:53:41566parcourir

How Can I Efficiently Read Large Text Files in .NET?

Lecture de fichiers texte volumineux dans .NET : explorer des approches efficaces

Travailler avec des fichiers texte volumineux nécessite des techniques efficaces pour gérer le grand volume de données . Un scénario courant consiste à lire ligne par ligne un fichier texte de 1 Go. Ce guide explore les méthodes optimales pour cette tâche.

StreamReader.ReadLine()

StreamReader est une approche courante pour lire des fichiers texte. La méthode ReadLine() permet de parcourir les lignes du fichier. Cependant, pour les fichiers volumineux, cette méthode peut être assez lente, car elle lit l'intégralité du fichier en mémoire.

MemoryMappedFile

Si disponible dans .NET 4.0 ou version ultérieure, MemoryMappedFile est une classe recommandée spécialement conçue pour gérer des fichiers volumineux. Il mappe le fichier en mémoire, permettant un accès direct à son contenu sans charger l'intégralité du fichier en mémoire.

Exemple de code

L'exemple de code suivant illustre comment utiliser MemoryMappedFile lire un gros texte file:

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));
}

Conclusion

Lors du traitement de fichiers texte volumineux, MemoryMappedFile offre une solution plus efficace par rapport à StreamReader.ReadLine(), permettant un accès direct au données sans charger l’intégralité du fichier en mémoire. Pour des raisons de compatibilité, StreamReader.ReadLine() reste une option viable pour les versions antérieures de .NET.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn