2015-12-19 4 views
2

У меня есть файл журнала .txt, который содержит несколько записей, которые прилагаются к файлу на минутной основе. Количество записей, добавляемых за минуту, является динамическим. т.е. если через минуту он добавляет 2 записи, то в следующую минуту можно добавить 5 записей. Содержание файла выглядит, как показано ниже
Как получить последние вставленные записи

"2015-Dec-19 02:00:00 AM", "Apple" 
"2015-Dec-19 02:00:00 AM", "Orange" 
"2015-Dec-19 02:01:00 AM", "Carrot" 
"2015-Dec-19 02:01:00 AM", "Onion" 
"2015-Dec-19 02:01:00 AM", "Beans" 
"2015-Dec-19 02:01:00 AM", "Banana" 
"2015-Dec-19 02:01:00 AM", "Apple" 

Забегая вперед, размер файла будет большим, и было бы трудно фильтровать записи. Есть ли способ в C#, который я могу узнать из свойства файла, сколько записей добавлено в последний раз, не открывая файл? т.е. в приведенном выше примере 5 записей добавляются по адресу 2015-Dec-19 02:01:00 AM. Поэтому мне нужно получить счет как 5.

Я знаю только, как получить свойства файла с помощью приведенного ниже кода, но не знаю, как заполнить мое требование из кода.

FileInfo fileInfo = new FileInfo("C:\Demo.txt"); 

ответ

3

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

Если вы хотите присвоить значение определенным словам в файле, вам нужно будет прочитать содержимое файла и проанализировать его, чтобы получить это значение обратно из файла. ОС или инфраструктура вам не помогут.

Похоже, вы действительно хотите базу данных.

+0

Спасибо чувак :) –

2

С моей точки зрения, если вам нужно работать с большими файлами и запрашивать даты, мое предложение - переключиться на SQLite (очень хорошо поддерживается на C#).

Однако вы могли следить за размером файла с FileInfo и вскоре вновь открыт сравнить с новой длиной (это будет работать только с записями фиксированной длиной.)

Новых записей добавлены = (currentLenght - lastLenght)/recordSize

Но нет возможности прямого запроса даты в бинарном файле

+0

Спасибо чувак :) –

Смежные вопросы