![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
Необходим некий java file/directory wather, который бы следил за определенным файлом/директорией и файлами внутри нее. Например добавили файл в папку, произошло событие, которое мы потом в каком-то виде можем передать другому классу, ну или что-то того. Проще говоря, надо мониторить некую директорию или файл, на факт создания/удаления/изменения файлов, и в соответствии с каждым событием инициировать то или иное действие.
Кто с такой задачей сталкивался? Что использовал? Какие подводные камни и т.п. Заранее больше спасибо! |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 8 Всего: 56 |
1. Составляешь список файлов/директорий.
2. Записываешь куда то last modification time для каждого. 3. Спустя некоторое время повторно сканируешь и инициируешь нужное событие в случае изменения/удаления/добавления... 4. в цикле 2,3 Задачка на пару часиков ... Это сообщение отредактировал(а) v2v - 23.12.2008, 23:56 |
|||
|
||||
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
Этот вариант я тоже рассматривал, но...
Надо не спустя некоторое время проверять, а именно тогда, когда добавился новый файл в директорию. Ну для меня может и побольше пары, но пока смотрю в сторону готового варианта Добавлено через 3 минуты и 25 секунд Вот нашел кое-что http://www2.hawaii.edu/~qzhang/FileSystemWatcher.html Завтра надо попробовать. Но все равно буду рад высказанным предложениям, мыслям и ссылкам |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 8 Всего: 56 |
воспользуйся JNI, (но тогда твоё приложение не будет cross platform). Вот пример реализованного приложения под Windows http://technet.microsoft.com/uk-ua/sysinte...642(en-us).aspx Вот либа для линукса ... http://oss.sgi.com/projects/fam/faq.html#why_use_fam В общем если так подходить к вопросу то , и вправду будет не слишком просто. А много директорий/файлов просматривать надо будет? |
|||
|
||||
| garbuz |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
Посмотрел я то, о чем писал выше. http://www2.hawaii.edu/~qzhang/FileSystemWatcher.html.
Проблема в следующем: в сорцах помимо классов java идут файлы cpp и h - это как я понимаю С++. В java коде в одном месте в статик блоке вызывается следующее
Ввлетает эксепшн
Так, добавил в параметры запуска -Djava.library.path=C:\lib, туда естественно положив все cpp и h файлы, но все равно возникает та же самая проблема? Из-за чего? Я предполагаю, что из этих сипэпэшних файлов надо собрать dll. Верно? Или что-нибудь другое? Посоветуйте. |
||||
|
|||||
| Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
Надо скомпилить библиотеку из cpp и h- файлов. Подробности тут http://antonsaburov.narod.ru/articles/jni.html
Это сообщение отредактировал(а) Temdegon - 24.12.2008, 16:14 |
|||
|
||||
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
А под визуалкой это можно сделать?
|
|||
|
||||
| Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
Я устанавливал себе Visual Studio 6 и собирал из консоли таким образом:
Разбираться как это сделать из среды разработки мне было откровенно лень. Добавлено через 10 минут и 43 секунды Держи. Я скомпилил твою либу. Попробуй подключить Присоединённый файл ( Кол-во скачиваний: 6 )
FileSystemWatcherNative.rar 9,47 Kb |
|||
|
||||
| garbuz |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
Спасибо огромное!!! Сейчас попробую!
Добавлено через 11 минут и 7 секунд Очень жаль, но что-то не вышло ...
Вот строка, где падает, самое начало метода run
|
||||
|
|||||
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
Вот джавадок к этому методу
|
|||
|
||||
| Temdegon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
У меня тот же Exception. пока совсем непонятно с чем это связано. Надо попробовать как-то по другому собрать библиотеку. Там лежит файл проекта от 8-й Visual Studio, а у меня только шестая вижла. Дома есть инсталятор восьмой, так что ночью попробую скомпилить ей. Очень хочется разобраться, т.к. штука полезная.
Добавлено через 4 минуты и 53 секунды ООО!!! у меня получилось!!!
Надо в main путь задать правильный и все дела! На пример
для текущего каталога Добавлено через 13 минут и 23 секунды В общем, я не совсем понял как правильно задавать путь к нужному каталогу. работает для "." или на пример "\\photo". в общем, нужно детально в этом разобраться, а времени на это сейчас нет, много срочной работы. Но факт в том, что Exception выпадает именно из-за пути в конструкторе и что вся эта штука работает. РАзберешься как именно нужно - отпишись плиз |
||||
|
|||||
| garbuz |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
Temdegon, большое спасибо за помощь!! Да, у меня тоже только пока с текущим каталогом работает ".", а вот чего с путями не работает - не знаю, буду ковырять...
У самого автора в примере написано
Еще надо разобраться будет с фильтрами событий, а то фильтр, который по умолчанию FILE_NOTIFY_CHANGE_LAST_WRITE реагирует на сворачивание IDE а трэй
Или действительно при этом событии что-то пишется... |
||||
|
|||||
| Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
задал путь ".\\photo"
задал фильтр NotifyFilters.FILE_NOTIFY_CHANGE_SIZE создал в папке с main-файлом папку photo. Прога адекватно реагирует на создание новых файлов, изменение файлов в папке. Непонятно почему она реагирует на перезапись существующего в папке файла точно таким же файлом с таким же размером. Не реагирует на удаление файла. В общем, с фильтрами надо эксперементировать. Непонятно почему не получается задать полный путь "С:\\". |
|||
|
||||
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
||||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |