web-dev-qa-db-fra.com

C # comment convertir File.ReadLines en tableau de chaînes?

La question que je me pose concerne la conversion du processus de lecture des lignes d'un fichier texte en tableau au lieu de simplement le lire.

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

Quelqu'un peut-il s'il vous plaît donner des conseils sur les codes pour enregistrer les résultats sous forme de tableau? J'ai placé le code ReadAllLines qui est également capable d'enregistrer les résultats dans un tableau. 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();
    }
}
}

Codes ReadAllLines:

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();
    }
}
}
21
JavaNoob

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

Si vous souhaitez utiliser un tableau de chaînes, vous devez appeler la fonction appropriée.

Vous pouvez utiliser la solution Jim, utilisez simplement ReadAllLines() ou vous pouvez changer votre type de retour.

Cela fonctionnerait également:

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

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

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

Bien qu'on se demande pourquoi vous voudrez faire ça quand ReadAllLines fonctionne très bien.

Ou peut-être voulez-vous simplement é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);
}
19
Jim Mischel

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

1
Greg Sansom