Чтение текстового файла блок за блоком - PullRequest
0 голосов
/ 18 января 2012

Я использую C # .net

Как читать текстовый файл блок за блоком, блок разделяется символом новой строки.

Размер блока не фиксирован, поэтому я не могу использовать метод ReadBlock StreamReader.

Существует ли какой-либо другой метод для получения блока данных по блокам, поскольку он разделен символом новой строки.

Ответы [ 4 ]

3 голосов
/ 18 января 2012

Вы можете использовать StreamReader :

using (var reader = File.OpenText("foo.txt"))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        // do something with the line
    }
}

Этот метод читает текстовый файл построчно (где Environment.NewLine используется в качестве разделителя строк), и в память загружается только текущая строка, поэтому его можно использовать для чтения очень больших файлов.

Если вы просто хотите загрузить все строки небольшого текстового файла в память, вы также можете использовать метод ReadAllLines :

string[] lines = File.ReadAllLines("foo.txt");
// the lines array will contain all the lines
// don't use this method with large files
// as it loads the entire contents into memory
0 голосов
/ 18 января 2012

Вы можете использовать метод File.ReadLines

foreach(string line in File.ReadLines(path))
{
   //do something with line
}

ReadLines возвращает IEnumerable<string>, поэтому в памяти одновременно сохраняется только одна строка.

0 голосов
/ 18 января 2012

Вы можете посмотреть на StreamReader.ReadToEnd() и String.Split()

использование:

string content = stream.ReadToEnd();
string[] blocks = content.Split('\n');//You may want to use "\r\n"
0 голосов
/ 18 января 2012

Что-то вроде:

using (TextReader tr = new StreamReader(FullFilePath))
{
  string Line;
  while ((Line = tr.ReadLine()) != null)
  {
    Line = Line.Trim();
  }
}

Забавно, я делал какой-то файл ввода-вывода на днях и обнаружил этот , который был очень полезен при обработке текстовых файлов с большими разделителями записей (например, преобразование записи в предопределенный тип, который вы определяете себя)

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