У меня есть приложение, в котором я хочу прослушать любые изменения, сделанные в конкретном каталоге. Приложение должно пинговать меня, как только будут добавлены, удалены или обновлены файлы в этом каталоге.Слушатель каталога в Java
ответ
Вы можете использовать JNotify
JNotify библиотека Java, что позволяет Java-приложение для прослушивания файла системных событий, таких как: создан файл Файла изменен файл переименовывается Файл удален Поддерживаемым платформ
Windows (2000 или новее) Windows примечания Linux с поддержкой INofity (2.6.14 или ) Linux Примечания Mac OS X (1) 0,5 или новее) Mac OS отмечает
Дополнительная информация:
Скачать JNotify из here
Extract молнию, поставить .dll/.so в соответствии с платформы в вашем Lib пути. и создать класс, введите jnotify-0.93.jar
в пути к классу.
Пример кода:
package org.life.java.stackoverflow.questions;
import net.contentobjects.jnotify.JNotify;
import net.contentobjects.jnotify.JNotifyListener;
/**
*
* @author Jigar
*/
public class JNotifyDemo {
public void sample() throws Exception {
// path to watch
String path = System.getProperty("user.home");
// watch mask, specify events you care about,
// or JNotify.FILE_ANY for all events.
int mask = JNotify.FILE_CREATED
| JNotify.FILE_DELETED
| JNotify.FILE_MODIFIED
| JNotify.FILE_RENAMED;
// watch subtree?
boolean watchSubtree = true;
// add actual watch
int watchID = JNotify.addWatch(path, mask, watchSubtree, new Listener());
// sleep a little, the application will exit if you
// don't (watching is asynchronous), depending on your
// application, this may not be required
Thread.sleep(1000000);
// to remove watch the watch
boolean res = JNotify.removeWatch(watchID);
if (!res) {
// invalid watch ID specified.
}
}
class Listener implements JNotifyListener {
public void fileRenamed(int wd, String rootPath, String oldName,
String newName) {
print("renamed " + rootPath + " : " + oldName + " -> " + newName);
}
public void fileModified(int wd, String rootPath, String name) {
print("modified " + rootPath + " : " + name);
}
public void fileDeleted(int wd, String rootPath, String name) {
print("deleted " + rootPath + " : " + name);
}
public void fileCreated(int wd, String rootPath, String name) {
print("created " + rootPath + " : " + name);
}
void print(String msg) {
System.err.println(msg);
}
}
public static void main(String[] args) throws Exception {
new JNotifyDemo().sample();
}
}
Выход:
modified C:\Documents and Settings\jigar: LOCALS~1\Temp\etilqs_4s8ywsvyukghK0uDxRop
modified C:\Documents and Settings\jigar : LOCALS~1\Temp\etilqs_4s8ywsvyukghK0uDxRop
modified C:\Documents and Settings\jigar : LOCALS~1\Temp\output1295531079119
modified C:\Documents and Settings\jigar : Local Settings\Application Data\Google\Chrome\User Data\Default
deleted C:\Documents and Settings\jigar : Local Settings\Application Data\Google\Chrome\User Data\Default\Cache\f_001ea9
created C:\Documents and Settings\jigar : Local Settings\Application Data\Google\Chrome\User Data\Default\Cache\f_001eae
modified C:\Documents and Settings\jigar : LOCALS~1\Temp\etilqs_04gchL79ZJrpClZIqiom
modified C:\Documents and Settings\jigar : LOCALS~1\Temp\etilqs_04gchL79ZJrpClZIqiom
modified C:\Documents and Settings\jigar : Local Settings\Application Data\Google\Chrome\User Data\Default\Cache
modified C:\Documents and Settings\jigar : Local Settings\Application Data\Google\Chrome\User Data\Default\Cache\f_001eae
modified C:\Documents and Settings\jigar : Local Settings\Application Data\Google\Chrome\User Data\Default\Cache\f_001eae
modified C:\Documents and Settings\jigar : LOCALS~1\Temp\output1295531079119
modified C:\Documents and Settings\jigar : Local Settings\Application Data\Google\Chrome\User Data\Default\Current Session
deleted C:\Documents and Settings\jigar : Local Settings\Application Data\Google\Chrome\User Data\Default\Cache\f_001ea8
created C:\Documents and Settings\jigar : Local Settings\Application Data\Google\Chrome\User Data\Default\Cache\f_001eaf
modified C:\Documents and Settings\jigar : Local Settings\Application Data\Google\Chrome\User Data\Default\Cache
modified C:\Documents and Settings\jigar : LOCALS~1\Temp\etilqs_04gchL79ZJrpClZIqiom
modified C:\Documents and Settings\jigar : LOCALS~1\Temp\etilqs_04gchL79ZJrpClZIqiom
modified C:\Documents and Settings\jigar : Local Settings\Application Data\Google\Chrome\User Data\Default\Cache\f_001eaf
modified C:\Documents and Settings\jigar : Local Settings\Application Data\Google\Chrome\User Data\Default\Cache\f_001eaf
Jnotify для уведомления о файле в java. Пример кода
public void sample() throws Exception {
// path to watch
String path = System.getProperty("user.home");
// watch mask, specify events you care about,
// or JNotify.FILE_ANY for all events.
int mask = JNotify.FILE_CREATED |
JNotify.FILE_DELETED |
JNotify.FILE_MODIFIED |
JNotify.FILE_RENAMED;
// watch subtree? boolean watchSubtree = true;
// add actual watch
int watchID = JNotify.addWatch(path, mask, watchSubtree, new Listener());
// sleep a little, the application will exit if you
// don't (watching is asynchronous), depending on your
// application, this may not be required
Thread.sleep(1000000);
// to remove watch the watch
boolean res = JNotify.removeWatch(watchID);
if (!res) {
// invalid watch ID specified.
}
}
class Listener implements JNotifyListener
{
public void fileRenamed(int wd, String rootPath, String oldName,
String newName) {
print("renamed " + rootPath + " : " + oldName + " -> " + newName); }
public void fileModified(int wd, String rootPath, String name)
{ print("modified " + rootPath + " : " + name); }
public void fileDeleted(int wd, String rootPath, String name) {
print("deleted " + rootPath + " : " + name); }
public void fileCreated(int wd, String rootPath, String name) {
print("created " + rootPath + " : " + name); }
void print(String msg) {
System.err.println(msg); }
}
Когда я запускаю программу она дает мне загрузки библиотеки exceptionError, java.library.path = C: \ Program Files \ Java \ jdk1.7.0 \ Bin;; C:. \ Windows \ Sun \ Java \ Bin; C: \ Windows \ system32; C: \ Windows, C: \ Windows, C: \ Windows \ system32; C: \ Windows \ system32 \ Wbem; \ WindowsPowerShell \ v1.0 \; C: \ Program Files \ Microsoft SQL Server \ 90 \ Tools \ binn \; C: \ apache-tomcat-6.0.26 \ bin; C: \ Program Files \ Java \ jdk1 .7.0 \ bin; C: \ Program Files \ TortoiseSVN \ bin; C: \ Program Files \ putty; C: \ Program Files \ Google \ Chrome \ Application; C: \ Program Files \ Java \ jdk1.7.0 \ include Исключение в теме "main" java.lang.Unsa – Jinith
1.- Щелкните правой кнопкой мыши по проекту 2.- Свойства 3.- Нажмите RUN 4.- Параметры VM: java -Djava.library.path = "ваш_path" 5.- например, в моем случае: java -Djava.library.path = Users/Lexynux/NetBeansProjects/NAO/libs> 6.- Ok –
Поскольку Java 1.7 вы можете использовать Watch Service API для регистрации событий каталога. Он является частью библиотеки Java New I/O (NIO) и не требует дополнительных ресурсов. Пример использования API можно найти в файле official documentation.
После регистрации WatchService вы можете получить события для целевого пути, как это:
for (WatchEvent<?> event: key.pollEvents()) {
// Context for directory entry event is the file name of entry
WatchEvent<Path> ev = cast(event);
Path name = ev.context();
Path child = dir.resolve(name);
// print out event
System.out.format("%s: %s\n", event.kind().name(), child);
}
- 1. Слушатель событий в java
- 2. Слушатель мыши в Java
- 3. Слушатель для Redis в Java
- 4. слушатель C# как java
- 5. Java-слушатель удаление
- 6. java Слушатель смены поля
- 7. Слушатель на Method.invoke java
- 8. способов кодировать Java Слушатель
- 9. Java Key Слушатель не работает
- 10. Java EE Filter и Слушатель
- 11. Серийный Event Data Слушатель Java
- 12. Java JComboBox Подавите изменение слушатель
- 13. Java - слушатель JButton не запускает
- 14. Радиоуправления: слушатель в формате XML или JAVA?
- 15. Копирование каталога в Java
- 16. Слушатель в Testng
- 17. Слушатель текста в JLabel
- 18. Java - Отдельный Слушатель класс бросает NullPointerException
- 19. Слушатель клавиатуры на основе консоли Java
- 20. Слушатель, когда приложение Java останавливается или падает
- 21. Постоянный слушатель для булевых - Java Android
- 22. java - такая вещь, как слушатель изменения объекта?
- 23. Java: текстовое поле Слушатель не будет работать
- 24. Java: JButtons, не работающий с действием. Слушатель
- 25. Java Swing | Главный слушатель вообще не отвечает
- 26. изменить владельца каталога в java
- 27. Получение имени каталога в java
- 28. Родитель родительского каталога в Java
- 29. Слушатель файлов в Apache-Camel
- 30. Манипуляция каталога java/python
* Downvoters * просьба прокомментировать –
Когда я запускаю программу, она дает мне исключительную библиотеку загрузки ошибок, java.library.path = C : \ Program Files \ Java \ jdk1.7.0 \ bin;.: C: \ Windows \ Sun \ Java \ bin; C: \ Windows \ system32; C: \ Windows; C: \ Windows; C: \ Windows \ system32; C: \ Windows \ system32 \ Wbem; \ WindowsPowerShell \ v1.0 \; C: \ Program Files \ Microsoft SQL Server \ 90 \ Tools \ binn \; C: \ apache-tomcat-6.0.26 \ bin; C: \ Программные файлы \ Java \ jdk1.7.0 \ bin; C: \ Program Files \ TortoiseSVN \ bin; C: \ Program Files \ putty; C: \ Program Files \ Google \ Chrome \ Application; C: \ Program Files \ Java \ jdk1.7.0 \ include Исключение в потоке "main" java.lang.Unsa – Jinith
'Извлеките zip, поместите .dll/.so в соответствии с платформой в вашем пути lib.' –