2010-11-19 4 views
12

La question que j'ai est de convertir le processus de lecture des lignes à partir d'un fichier texte dans un tableau au lieu de simplement le lire.C# comment convertir File.ReadLines en tableau de chaînes?

L'erreur dans mes codes apparaissent à string[] lines = File.ReadLines("c:\\file.txt"); avec ne peut pas convertir .... implicitement

Quelqu'un peut-il s'il vous plaît conseiller sur les codes pour enregistrer les résultats dans un format de tableau? J'ai placé le code ReadAllLines qui est capable de sauvegarder les résultats dans un tableau aussi. Merci!

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Diagnostics; 
using System.IO; 

namespace Testing 
{ 
class Analysis 
{ 
    static void Main() 
    { 
     string[] lines = File.ReadLines("c:\\file.txt"); 

     foreach (string r in lines) 
     { 
      Console.WriteLine("-- {0}", r); 
     } 

     // Keep the console window open in debug mode. 
     Console.WriteLine("Press any key to exit."); 
     System.Console.ReadKey(); 
    } 
} 
} 

ReadAllLines Codes:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Diagnostics; 
using System.IO; 

namespace Testing 
{ 
class ReadFromFile 
{ 
    static void Main() 
    { 
     string[] lines = System.IO.File.ReadAllLines 
     (@"C:\Users\Public\TestFolder\WriteLines2.txt"); 

     System.Console.WriteLine("Contents of writeLines2.txt =:"); 
     foreach (string line in lines) 
     { 
      Console.WriteLine("\t" + line); 
     } 

     // Keep the console window open in debug mode. 
     Console.WriteLine("Press any key to exit."); 
     System.Console.ReadKey(); 
    } 
} 
} 
+4

Il semble que 'ReadAllLines' fasse déjà ce que vous voulez, alors pourquoi essayez-vous d'utiliser' ReadLines' pour cela? – Gabe

+0

Regardez les commentaires ci-dessous. Merci. – JavaNoob

Répondre

26

File.ReadLines() retourne un objet de type System.Collections.Generic.IEnumerable<String>
File.ReadAllLines() retourne un tableau de chaînes.

Si vous souhaitez utiliser une série de chaînes, vous devez appeler la fonction correcte.

Vous pouvez utiliser la solution Jim, il suffit d'utiliser ReadAllLines() ou vous pouvez changer votre type de retour.

Cela fonctionne également:

System.Collections.Generic.IEnumerable<String> lines = File.ReadLines("c:\\file.txt"); 

Vous pouvez utiliser une collection générique qui implémente IEnumerable. IList pour un exemple.

+0

ReturnLines n'est pas une définition. C'est ce que le système montre. – JavaNoob

+0

Ah, je vois ma faute de frappe maintenant. J'ai mis à jour la réponse, il devrait être ReadLines. Le point est si vous avez besoin d'un tableau utilisez ReadAllLines(). Si vous pouvez utiliser une collection ReadLines() fonctionne mieux sur les fichiers volumineux, car les lignes individuelles ne sont tirées que lorsque cela est nécessaire. –

+1

Yup est un peu l'idée d'autoriser l'utilisation d'un fichier plus volumineux dans ReadLines. Donc, les codes ci-dessus ne sont pas similaires à ReadAllLines droite? – JavaNoob

16
string[] lines = File.ReadLines("c:\\file.txt").ToArray(); 

Même si on se demande pourquoi vous voulez faire quand ReadAllLines fonctionne très bien.

Ou peut-être vous voulez juste d'énumérer avec la valeur de retour de File.ReadLines:

var lines = File.ReadAllLines("c:\\file.txt"); 
foreach (var line in lines) 
{ 
    Console.WriteLine("\t" + line); 
} 
+0

La raison de l'utilisation de Readlines au lieu de ReadAllLines est due à la taille du fichier. Il est conseillé pour les fichiers de texte volumineux car cela pourrait provoquer un débordement de la mémoire tampon. – JavaNoob

+4

Mais appeler 'ToArray' annulera tout avantage d'appeler' ReadLines'. Utilisez l'énumérateur comme je l'ai montré. –

+0

L'énumérateur utilise-t-il les fonctions de ReadLines? – JavaNoob

1

Modifier string[] lines = File.ReadLines("c:\\file.txt"); à IEnumerable<string> lines = File.ReadLines("c:\\file.txt"); Le reste de votre code devrait fonctionner correctement.

Questions connexes