Лучший метод C # для доступа к содержимому текстового файла - PullRequest
0 голосов
/ 24 июня 2018

Я начинаю переходить с VB6 на C#. Хотя я опытный программист (более 40 лет), я часто знаю новые конструкции, которые помогают, а не прилежно переводят построчно. Наша компания получает заказы в виде текстового файла, который состоит из списка строк.

XXX=param1;param2
YYY=param1;param2

В VB6 я создал очень сложный класс строк для поиска, извлечения, обновления, добавления, удаления и вставки этих строк.

Предлагает ли C # уже существующую конструкцию или мне нужно написать свою собственную. Конструкция Dictionary выглядит хорошо, но меня беспокоит количество значений, а также то, есть ли способ импортировать файл за один раз, не читая его построчно.

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Вы не упоминаете версию C #, @jonskeet упоминает в этом ответе о File.ReadLines,

Если вы используете .NET 4, просто используйте File.ReadLines, который делает все это для тебя. Я подозреваю, что это так же, как у вас, за исключением того, что он также может использовать FileOptions.SequentialScan и больший буфер (128 кажется очень маленьким).

Основываясь на ответе выше, я ищу, что есть возможность преобразовать результат файла в список, и я получил ответ , поэтому после преобразования вы также используете linq.

List<string> allLinesText = File.ReadAllLines(fileName).ToList()
0 голосов
/ 24 июня 2018

Нет, C # не предлагает такого рода вещи, вам нужно написать свой собственный анализатор файлов (вероятно, такой, какой у вас уже есть в VB6).

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

Было бы гораздо проще создать 1-2 класса для анализа, используя в основном:

  • File.ReadAllLines для чтения текстовых файлов и получениямассив строк.
  • line.Split(';') для получения параметров каждой строки (при условии, что вы просматриваете строки).
...