web-dev-qa-db-fra.com

Quelle est la différence entre File.ReadLines () et File.ReadAllLines ()?

J'ai une question concernant File.ReadLines () et File.ReadAllLines (). Quelle est la différence entre eux. J'ai un fichier texte où il contient des données par ligne. File.ReadAllLines() retourne un tableau et en utilisant File.ReadLines().ToArray();, je peux également obtenir le même résultat. Y a-t-il une différence de performance liée à ces méthodes?

string[] lines = File.ReadLines("C:\\mytxt.txt").ToArray();

Ou

string[] lines = File.ReadAllLines("C:\\mytxt.txt");
42
sharad

y a-t-il une différence de performance liée à ces méthodes?

[~ # ~] oui [~ # ~] il y a une différence

La méthode File.ReadAllLines() lit le fichier entier à la fois et retourne le tableau de chaînes [], donc cela prend du temps tout en travaillant avec une grande taille de fichiers et n'est pas recommandé car l'utilisateur doit attendre jusqu'à ce que le tableau entier soit renvoyé.

File.ReadLines() renvoie un IEnumerable<string> et il ne lit pas le fichier entier d'un seul coup, c'est donc vraiment une meilleure option lorsque vous travaillez avec des fichiers de grande taille.

De MSDN :

Les méthodes ReadLines et ReadAllLines diffèrent comme suit:

Lorsque vous utilisez ReadLines, vous pouvez commencer à énumérer la collection de chaînes avant que la collection entière ne soit retournée; lorsque vous utilisez ReadAllLines, vous devez attendre que tout le tableau de chaînes soit renvoyé avant de pouvoir accéder au tableau. Par conséquent, lorsque vous travaillez avec des fichiers très volumineux, les ReadLines peuvent être plus efficaces.

Exemple 1: File.ReadAllLines()

string[] lines = File.ReadAllLines("C:\\mytxt.txt");

Exemple 2: File.ReadLines()

foreach (var line in File.ReadLines("C:\\mytxt.txt"))
{

   //Do something     

}
63
Sudhakar Tillapudi

File.ReadLines La méthode renvoie IEnumerable<string>. Mais File.ReadAllLines résultats string[] Si vous lisez un gros fichier, il vaut mieux utiliser File.ReadLines Méthode. parce que sa lecture se fait ligne après ligne à partir du fichier, pas lire le tout dans string[] qui prennent beaucoup de mémoire. MSDN

3
Jacob

ReadAllLines

Ouvre un fichier texte, lit toutes les lignes du fichier, puis ferme le fichier.

Si vous avez de petits fichiers ou devez traiter le fichier complet à la fois, utilisez-le car il lit complètement le fichier, ce qui signifie que le fichier entier est dans votre mémoire. En cas de fichiers volumineux, cela peut ralentir les performances.

ReadLines

Avec la méthode File.ReadLines, vous pouvez commencer à énumérer la collection de chaînes avant que la collection entière ne soit retournée.

Il est utile si vous devez traiter le fichier en plusieurs morceaux (pas le fichier entier à la fois).

Remarques énoncées dans MSDN :

Les méthodes ReadLines et ReadAllLines diffèrent comme suit:

Lorsque vous utilisez ReadLines, vous pouvez commencer à énumérer la collection de chaînes avant que la collection entière ne soit renvoyée; lorsque vous utilisez ReadAllLines, vous devez attendre que tout le tableau de chaînes soit renvoyé avant de pouvoir accéder au tableau. Par conséquent, lorsque vous travaillez avec des fichiers très volumineux, les ReadLines peuvent être plus efficaces.

Voici plus de détails et une démo de comparaison disponible

2
Zaheer Ahmed