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
Libérer: 2025-01-05 10:53:41
original
571 Les gens l'ont consulté

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));
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal