C #, как конвертировать File.ReadLines в массив строк? - PullRequest
19 голосов
/ 19 ноября 2010

Вопрос, который у меня есть, касается преобразования процесса чтения строк из текстового файла в массив вместо простого чтения.

Ошибка в моих кодах появляется в string[] lines = File.ReadLines("c:\\file.txt"); с невозможностью конвертации ....

Может кто-нибудь посоветовать, пожалуйста, коды, чтобы сохранить результаты в формате массива? Я поместил код ReadAllLines, который также может сохранять результаты в массиве. Спасибо!

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:

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

Ответы [ 3 ]

34 голосов
/ 19 ноября 2010

File.ReadLines() возвращает объект типа System.Collections.Generic.IEnumerable<String>
File.ReadAllLines() возвращает массив строк.

Если вы хотите использовать массив строк, вам нужно вызвать правильную функцию.

Вы можете использовать решение Jim, просто используйте ReadAllLines() или вы можете изменить тип возврата.

Это также будет работать:

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

Вы можете использовать любую универсальную коллекцию, которая реализует IEnumerable. IList для примера.

18 голосов
/ 19 ноября 2010
string[] lines = File.ReadLines("c:\\file.txt").ToArray();

Хотя возникает вопрос, почему вы захотите сделать это, когда ReadAllLines работает просто отлично.

Или, возможно, вы просто хотите перечислить с возвращаемым значением File.ReadLines:

var lines = File.ReadAllLines("c:\\file.txt");
foreach (var line in lines)
{
    Console.WriteLine("\t" + line);
}
1 голос
/ 19 ноября 2010

Измените string[] lines = File.ReadLines("c:\\file.txt"); на IEnumerable<string> lines = File.ReadLines("c:\\file.txt"); Остальной код должен работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...