Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: как отловить создание файла в директории? Добавлено: 27.04.06 12:41  

Автор вопроса:  gsocol | Web-сайт: www.gochsorb.com.ru
Ситуация такая: Запущено приложение, в момент появления в директории (допустим это будет директория /check_in )
файла, программа анализирует его, и взависимости от его содержания перемещает в другую папку или удаляет его и ждет появления очередного файла.
Так вот вопрос: как средствами VB.NET отследить появление любого файла в директории? Если можно - примерчик. Опрашивать постоянно из программы - лишняя работа, потому что файл может появляться и 1 раз в сутки, а может за несколько суток вообще не появиться.

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #1 Добавлено: 27.04.06 13:43
Там в нет есть какой-то маршал (или ефрейтор, точно не помню) который позволяет вызвать функцию FindFirstChangeNotification, которая вкупе с WaitForMultipleObjects позволяет мониторить изменение содержимого директорий.

Ответить

Номер ответа: 2
Автор ответа:
 ПтирЯ



Вопросов: 11
Ответов: 71
 Профиль | | #2 Добавлено: 27.04.06 15:25
Попробуй посмотреть стандартный компонентик FileSystemWatcher. Он может вызывать events на нужные события.
ну а без него - так сажай на таймер просмотр и анализ папки

Ответить

Номер ответа: 3
Автор ответа:
 Александр Ларин



ICQ: 349720655 

Вопросов: 0
Ответов: 3
 Web-сайт: yxine.vsc-group.biz
 Профиль | | #3
Добавлено: 27.04.06 16:57
В .NET есть компонента, которая нотифает за директориями. Сорри, но щас точно не смогу тебе подсказать как реализовать удачнее. Давай в аську - завтра/послезавтра - помогу

Ответить

Номер ответа: 4
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #4
Добавлено: 28.04.06 01:09
System.IO.FileSystemWatcher fsw;


fsw.Changed+=new FileSystemEventHandler(HandleChangedCreatedDeleted);
// обработчик события
// будет вызвана функция HandleChangedCreatedDeleted


{
// включаем слежение
 fsw.Path = txtPath.Text;
fsw.IncludeSubdirectories = chkIncludeSubdirectories.Checked;
}

Ответить

Номер ответа: 5
Автор ответа:
 gsocol



Вопросов: 2
Ответов: 2
 Web-сайт: www.gochsorb.com.ru
 Профиль | | #5
Добавлено: 28.04.06 05:53
Сенькс всем откликнувшимся за ответы, все получилось. К тому же в МСДН нашел и пример использования FileSystemWatcher.

Ответить

Номер ответа: 6
Автор ответа:
 gsocol



Вопросов: 2
Ответов: 2
 Web-сайт: www.gochsorb.com.ru
 Профиль | | #6
Добавлено: 28.04.06 07:27
Помещаю пример использовани :)
Imports System
Imports System.IO

Namespace Watcher

    Module Watcher

        Public Sub Main()
            ;Dim args As String()
            ;Dim appName As String
            args = Environment.GetCommandLineArgs()
            appName = args(0)

            If (args.Length <> 2) Then
                Console.WriteLine("Usage: " + appname + "<directory>";)

            Else
                ;Dim watcher As FileSystemWatcher
                watcher = New FileSystemWatcher()
                watcher.Path = args(1)
                watcher.NotifyFilter = NotifyFilters.FileName Or NotifyFilters.Attributes Or NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.Security Or NotifyFilters.Size

                AddHandler watcher.Changed, AddressOf OnChanged
                AddHandler watcher.Created, AddressOf OnChanged
                AddHandler watcher.Deleted, AddressOf OnChanged
                AddHandler watcher.Renamed, AddressOf OnRenamed

                watcher.EnableRaisingEvents = True
            End If

            Console.WriteLine("Press Enter to quit the sample";)
            Console.WriteLine()
            Console.ReadLine()
        End Sub

        Public Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
            Console.WriteLine("File: {0} {1}", e.FullPath, e.ChangeType.ToString("G";))
        End Sub

        Public Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)
            Console.WriteLine("File: {0} Renamed to {1}", e.OldFullPath, e.FullPath)
        End Sub

    End Module

End Namespace

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам