Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Считать файл и передать в MySQL


Автор: mashutkai 30.4.2009, 05:28
Здравствуйте. Помогите пожалуйста написать такую программу: надо чобы программа каждые 5 секунд считывала файл построчно и если он изменился, записывать новую строку в MySQL на удалённый сервер, а не достающие - удалять.

С начала помогите считать файл в переменную или в массив и вывести хотябы через MsgBox.

Делаю это в VB 2008 Express

Автор: -Mikle- 30.4.2009, 09:16
Во первых, считывание каждые 5 секунд очень плохо. Нужно ловить системное событие об этом моменте. Для таких целей служит компонент FileSystemWatcher, кинешь на форму и разберешься, он прост.

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

В третьих, для самого считывания, нужно иметь переменную Long. Значение переменной будет говорить о последней удачно прочитанной позиции в файле. Ее значение нужно обновлять только тогда, когда ты прочитал строку и записал ее в БД. Значение этой переменной нужно еще сохранить снаружи программы (в настройках или еще где-нить) сразу же, после ее обновления.
Для построчного чтения из файла лучше использовать StreamReader (Imports System.IO).

Надеюсь, что здесь все предельно понятно. Если будет что-то не получаться пиши.

Добавлено через 35 секунд
Кстати, а что ты пишешь?

Автор: mashutkai 30.4.2009, 11:39
Считать у меня получилось, но теперь не могу разобраться с FileSystemWatcher. Можете дать мне какой-нибудь пример плз smile

Автор: -Mikle- 30.4.2009, 13:01
Свойства:

EnableRaisingEvents - нужно для того, чтобы приостановить/продолжить отслеживание. По умолчанию имеет значение True (отслеживать).

Filter - задает маску имени фйлов, которые будут отслеживаться системой. Допустимо указать имя файла полностью для отслеживания только его (например, myfile.txt)

IncludeSubdirectories - указывает на то, нужно ли включать в отслеживание вложенные папки.

NotifyFilter - набор флагов ограничивающих тип слежения. Допустимо указывать несколько флагов, например, если указать
    FileSystemWatcher1.NotifyFilter = NotifyFilters.Size Or NotifyFilters.FileName
то ты будешь получать уведомления только если изменится размер или имя.

Path - путь к файлу или паке в зависимости от того, за кем надо следить.

Ну и события: Changed, Renamed, Deleted, Created. Первое, вызывается для всех типов изменеий, соответствующих настройкам, остальные - только для соответствующих.

Все остальное наследовано и к делу не относится.

Добавлено через 24 секунды
Кстати, а что ты пишешь?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)