Maison >développement back-end >C++ >Comment lire efficacement un fichier texte de 1 Go dans .NET ?

Comment lire efficacement un fichier texte de 1 Go dans .NET ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-04 19:26:42419parcourir

How to Efficiently Read a 1GB Text File in .NET?

Comment lire un fichier texte volumineux (1 Go) dans .NET

Accéder efficacement à des fichiers texte volumineux est une tâche cruciale dans le traitement des données et analyses. Dans .NET, il existe plusieurs techniques pour lire des fichiers texte volumineux, notamment MemoryMappedFile et StreamReader.ReadLine.

MemoryMappedFile

Pour .NET 4.0 et supérieur, MemoryMappedFile fournit des performances pour la lecture de fichiers volumineux. Il crée un fichier mappé en mémoire, permettant un accès direct à la mémoire du fichier sans mise en mémoire tampon intermédiaire. Cela élimine le besoin de plusieurs lectures de disque et améliore considérablement les performances.

Pour utiliser MemoryMappedFile :

using System.IO.MemoryMappedFiles;

public static void ReadTxtFileUsingMemoryMappedFile()
{
    string filePath = string.Empty;
    // Get file path from user or other source
    using (MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile(filePath))
    {
        byte[] buffer = new byte[mmf.Capacity];
        mmf.CreateViewAccessor().ReadArray(0, buffer, 0, buffer.Length);
        string data = System.Text.Encoding.UTF8.GetString(buffer);
        // Parse or process the data
    }
}

StreamReader.ReadLine

Si vous Si vous n'utilisez pas .NET 4.0 ou préférez une approche plus simple, vous pouvez utiliser StreamReader.ReadLine. Cette méthode lit une ligne de texte du fichier et la renvoie sous forme de chaîne. Bien qu'il puisse être plus lent que MemoryMappedFile, il s'agit d'une option simple et fiable.

Pour utiliser StreamReader.ReadLine :

using System.IO;

public static void ReadTxtFileUsingStreamReader()
{
    string filePath = string.Empty;
    // Get file path from user or other source
    using (StreamReader sr = new StreamReader(filePath))
    {
        string line;
        while ((line = sr.ReadLine()) != null)
        {
            // Parse or process the line
        }
    }
}

Le choix de la meilleure approche dépend de vos besoins spécifiques. Si les performances sont critiques et que vous utilisez .NET 4.0, MemoryMappedFile est fortement recommandé. Sinon, StreamReader.ReadLine propose une solution simple et fiable pour lire des fichiers texte volumineux.

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