2013-12-01 3 views
2

Я хотел бы взять текстовый файл с большим количеством строк и превратить его в массив. Например, если текстовый файл был:Массивы и текстовые файлы

Линия 1

Линия 2

Линия 3

Линия 4`

Это приведет к

string[] stringList = { "Line 1", "Line 2", "Line 3", "Line 4" }; 

Как это сделать?

Я попытался это:

string line; 
string[] accountList; 
      using (StreamReader file = new StreamReader(accountFileLocation.Text)) 
      { 
       while (line = file.ReadLine() != null) 
       { 
        stringList += line; 
       } 
      } 

Однако, что ошибки с:

Не может неявно преобразовать тип 'Его' в 'строки'

Невозможно преобразовать тип 'строку' в 'string []'

Невозможно неявно преобразовать тип 'string' в 'string []'

+5

Научившись кода, а затем применить свои знания. Что вы пробовали? –

+0

Забыл добавить то, что я пробовал к сообщению, добавил. – Frank

+0

Возможный дубликат [Какой самый быстрый способ чтения текстового файла по очереди?] (Http://stackoverflow.com/questions/8037070/whats-the-fastest-way-to-read-a-text- file-line-by-line) –

ответ

7

просто использовать

string[] lines = File.ReadAllLines(yourpathFile); 
+0

Будет ли это автоматически помещать их в другую строку для каждой строки? Или просто одна большая струна? – Frank

+0

Каждая строка завершается с \ r \ n будет другим элементом в массиве –

+0

В текстовом файле много строк (несколько тысяч). Есть ли способ сделать это без \ r \ n? – Frank

0

Я буду ходить вам, как я наткнулся на решение, как обучение, что Google является важным навыком в поиске решений.

Если вы Google "Как открыть текстовый файл в C# вы нашли этот сайт http://msdn.microsoft.com/en-us/library/db5x7c0d(v=vs.110).aspx , который использует класс, называемый«StreamReader»и его метод" ReadToEnd() в примере это дает вам.

Если вы затем перейти к Google «С # StreamReader» вы можете найти все методы, которые он имеет http://msdn.microsoft.com/en-us/library/system.io.streamreader(v=vs.110).aspx

Если вы прокрутите вниз к методам R вы можете найти один называется «ReadLine». При нажатии на нее вы можете найти рабочий пример того, что именно вам нужно: http://msdn.microsoft.com/en-us/library/system.io.streamreader.readline(v=vs.110).aspx

string path = @"c:\temp\MyTest.txt"; 
using (StreamReader sr = new StreamReader(path)) 
     { 
      while (sr.Peek() >= 0) 
      { 
       Console.WriteLine(sr.ReadLine()); 
      } 
     } 
0

Не могли бы вы попробовать это:

StreamReader reader = new StreamReader(); 
String content = file.readToEnd(); 
file.close(); 
String[] lines = content.split("\n".toCharArray()); 
+0

Это оставило бы '\ r' в конце каждой строки, когда оно находится в формате Windows, даже поэтому не очень удобно читать все в строке sinlge, а затем снова разбить. – Silvermind

0

просто попробовать:

string n = "line1\r\nline2\r\n"; 
string[] list = n.Split('\r'); //or string[] list = n.Split('\n') 
Смежные вопросы