![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| СЭНСЭЙ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
Люди добрые помогите.
Есть прога которая реагирует на работу некоторого оборудования и вносит данные в текстовый файл. Необходимо написать прогу, которая будет реагировать на изменения текстового файла.Неважно на какие , просто если изменилася к примеру размер файла. Я думал написать цикл в котором проверяется размер файла, но может кто то подскажет вариант порациональней? |
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Почитай про FileSystemWatcher.
-------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| СЭНСЭЙ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
От спасибо, главное знать что искать...
Вот пример использования этого класса. // Подключем нужное пространство имен. using System.IO; class Class1 { statyc void Main(string[] args) { // Будем следить за папкой "c:\tmp". FileSystemWatcher watcher = new FileSystemWatcher(@"c:\tmp"); // Следим за изменением имени файлов. watcher.NotifyFilter = NotifyFilters.FileName; // Добавляем обработчик для события переименования файла. watcher.Renamed += new RenamedEventHandler(OnRenamed); // Начинаем слежение. watcher.EnableRaisingEvents = true; // Следим, пока пользователь не нажал q. Console.WriteLine("Press 'q' to exit"); while(Console.Read()!='q'); } // Обработчик для события переименования файла. private static void OnRenamed(object source, RenamedEventArgs e) { Console.WriteLine("{0} renamed to {1}", e.OldName, e.Name); } } Как вы видите, схема действий тут такая - сначала мы указываем, за чем именно мы хотим следить (за какой папкой, за какими файлами и за какими событиями для этих файлов). Потом мы указываем, что за метод будет выполняться при наступлении того или иного события. Разумеется, этот метод должен быть в нашей программе, причем он должен иметь определенную сигнатуру. Конкретно в нашем примере мы будем отслеживать переименование для всех файлов в папке "c:\tmp". |
|||
|
||||
| СЭНСЭЙ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
Вобщем помучался я и сделал наконецто обработчик событий любых изменений в папке
вот тело класса: using System; using System.IO; using System.Data; using System.Text; namespace DataDaseF { /// <summary> /// Summary description for Class1. /// </summary> public class Class1 { public static void watch() { // Будем следить за папкой "c:\tmp". FileSystemWatcher watcher = new FileSystemWatcher(@"c:\OUT41C"); // Следим за изменением файлов. watcher.NotifyFilter = NotifyFilters.LastWrite; // Добавляем обработчик для события измененияия любого файла в папке. watcher.Changed += new FileSystemEventHandler(OnChanged); // Начинаем слежение. watcher.EnableRaisingEvents = true; } // Обработчик для события изменеия файла. private static void OnChanged(object source, FileSystemEventArgs e) { //тело процедуры выполняемой при изменении string filename=@"c:\tmp\1.txt"; FileStream afile = new FileStream(filename,FileMode.Create); StreamWriter sw = new StreamWriter(afile); sw.WriteLine("|"); sw.Close(); } } } а потом вызывавем метод ксасса в главной форме private void Form1_Load(object sender, System.EventArgs e) { Class1.watch(); } результат: как только вносятся любые изменения в папку c:\OUT41C то создается файл c:\tmp\1.txt и в него записывается символ "|" как следить за розмером конкретного файла я пока не выяснил |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
СЭНСЭЙ, пользуйтесь кнопкой "Код".
-------------------- ![]() |
|||
|
||||
| СЭНСЭЙ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
хорошо
Добавлено через 16 секунд ой...
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |