Каким будет лучший подход к анализу файла с разделителями, когда столбцы неизвестны до разбора файла?Разбор больших файлов с разделителями с динамическим числом столбцов
Формат файла Rightmove v3 (.blm), структура выглядит следующим образом:
#HEADER#
Version : 3
EOF : '^'
EOR : '~'
#DEFINITION#
AGENT_REF^ADDRESS_1^POSTCODE1^MEDIA_IMAGE_00~ // can be any number of columns
#DATA#
agent1^the address^the postcode^an image~
agent2^the address^the postcode^^~ // the records have to have the same number of columns as specified in the definition, however they can be empty
etc
#END#
файлы потенциально могут быть очень большими, например, файл у меня есть 40Mb, но они могут быть несколько сот мегабайта , Ниже приведен код, который я начал, прежде чем я понял, что столбцы были динамическими, я открываю поток, когда я читал, что это лучший способ обработки больших файлов. Я не уверен, что моя идея поместить каждую запись в список, тогда обработка - это все-таки хорошо, не знаю, будет ли это работать с такими большими файлами.
List<string> recordList = new List<string>();
try
{
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
StreamReader file = new StreamReader(fs);
string line;
while ((line = file.ReadLine()) != null)
{
string[] records = line.Split('~');
foreach (string item in records)
{
if (item != String.Empty)
{
recordList.Add(item);
}
}
}
}
}
catch (FileNotFoundException ex)
{
Console.WriteLine(ex.Message);
}
foreach (string r in recordList)
{
Property property = new Property();
string[] fields = r.Split('^');
// can't do this as I don't know which field is the post code
property.PostCode = fields[2];
// etc
propertyList.Add(property);
}
Любые идеи о том, как это сделать лучше? Это C# 3.0 и .Net 3.5, если это помогает.
Спасибо,
Annelie
У меня также такая же проблема, можете ли вы рассказать мне, как я могу получить значение значения из # Data # из этого файла. PLZ помогите мне как можно скорее. – Rajpurohit
Привет, Раджпурохит, если ответов, приведенных здесь, недостаточно, чтобы помочь вам, тогда было бы лучше, если бы вы опубликовали новый вопрос. Нам будет легче помочь, если мы узнаем больше деталей. – annelie
На самом деле у меня есть файл в том же формате, что и выше, поэтому на самом деле мне нужно прочитать этот файл и получить данные этого файла, и мне нужно вставить эти данные в базу данных, но я не знаю, как читать файл. На самом деле форматом файла является # Заголовок # # ОПРЕДЕЛЕНИЕ # # Данные # # Конец # так, как получить мои данные и вставить в базу данных plz скажите мне. – Rajpurohit