JNA为第三方的JNI的一个实现包。里面实现了很多windows与linux的工具类。
package com.xiva.demo.jna; import java.io.File; import com.sun.jna.platform.FileMonitor; import com.sun.jna.platform.FileMonitor.FileEvent; import com.sun.jna.platform.FileMonitor.FileListener; import com.xiva.lucene.IvIndexUpdate; public class IvFileListener implements FileListener { private long lastTime = System.currentTimeMillis(); public void fileChanged(FileEvent fileevent) { if (fileevent.getType() == FileMonitor.FILE_MODIFIED) { fileevent.getFile(); System.out.println(Thread.currentThread().getId()); File file = fileevent.getFile(); System.out.println("FILE_MODIFIED:" + file.getName()); long currentTime = System.currentTimeMillis(); System.out.println(currentTime); if (currentTime - 10000L > lastTime) { try { IvIndexUpdate.updateIndex(); } catch (Exception e) { e.printStackTrace(); } } lastTime = currentTime; } } }
package com.xiva.demo.jna; import java.io.File; import java.util.concurrent.TimeUnit; import com.sun.jna.platform.FileMonitor; import com.sun.jna.platform.win32.W32FileMonitor; /** * 目录检视 */ public class JNADemo { public static void main(String[] args) { File dir = new File("E:\\data\\lucene"); FileMonitor fileMon = W32FileMonitor.getInstance(); IvFileListener fileListen = new IvFileListener(); System.out.println(Thread.currentThread().getId()); try { fileMon.addWatch(dir, 10, true); fileMon.addFileListener(fileListen); TimeUnit.SECONDS.sleep(1000); } catch (Exception e) { e.printStackTrace(); } } }
其中有一个小的缺陷,就是修改文件会同时响应两次。也许与win的事件响应机制有关,可能是修改文件内容与修改文件属性各响应一次。给出的一个这种方法就是加上条件判断:(currentTime - 10000L > lastTime) 。
相关推荐
总的来说,JNA为Java开发者提供了一种强大而灵活的方式来与本地代码交互,使得Java应用能够充分利用操作系统提供的各种功能,而无需编写或管理本地代码。无论你是想进行系统级编程、调用已有的C/C++库还是操作硬件...
标题“JNA C文件(codeblocks编写)”所指的,是利用Java Native Access (JNA) 技术来与C语言编写的动态链接库(DLL)进行交互的项目。JNA是Java平台上的一个开源库,它允许Java代码无缝地调用本地操作系统API和其他...
本示例将详细解析如何使用JNA在Java中调用C语言库文件。 首先,我们需要理解JNA的工作原理。JNA通过映射Java方法到本地函数来实现调用,这得益于其内建的类型映射系统。Java中的数据类型会自动转换为对应的C语言...
JNA库文件和文档的目的是让Java开发者能够轻松地与C/C++库进行交互,即使他们不熟悉这些低级语言。下面将详细介绍JNA的工作原理、主要功能以及如何使用。 一、JNA工作原理 JNA的核心思想是通过映射Java方法到本地...
在Java编程环境中,有时我们需要与操作系统底层功能进行交互,例如调用C语言编写的动态链接库(DLL)函数。在这种情况下,Java Native Access (JNA) 提供了一个强大的解决方案。JNA 是一个Java库,允许Java代码直接...
java 使用JNA读取ddl文件,亲测有效!
1. **性能提升**:可能对内存管理和调用速度进行了优化,使得JNA在大规模或频繁调用本地函数时更高效。 2. **新功能添加**:可能引入了新的API或增强现有功能,以更好地支持不同的操作系统和本地库。 3. **错误修复*...
为了深入了解并学习该项目,你需要解压文件,阅读源代码,了解其如何配置和使用JNA进行本地函数调用。这将帮助你掌握如何在实际项目中应用JNA,解决Java与本地系统交互的问题。 总之,JNA为Java开发者提供了一个...
JNA提供了动态加载.dll(Windows)或.so(Linux/Unix)文件的能力,使得Java应用程序能够利用本地系统资源,如操作系统函数、硬件设备等。 在标题中提到的“JNA调用.dll文件或.so动态链接库的代码demo”,这是一个...
这个文件是JNA平台库的核心组件,它包含了对各种操作系统API的预定义映射,包括Windows、Linux、Mac OS X等。JNA平台库提供了大量的结构体、枚举类型和函数接口,使得开发者能够方便地访问操作系统底层的服务,例如...
2. `jna-platform-5.8.0.jar`:这个库扩展了JNA的基本功能,包含了对多种操作系统平台(如Windows、Linux、Mac OS等)的特定API的预定义映射。它使得开发者可以方便地访问常见的操作系统服务,如文件系统、网络、...
里面包含了JNA的4.2.1版本的jna.jar包以及所有CPU平台的.so库文件,具体介绍参见博客:http://blog.csdn.net/abc6368765/article/details/77671682
解压 【jna-***.jar中文文档.zip】,再解压其中的 【jna-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请...
JNA通过反射机制实现了对本地库的动态调用,并且支持Windows下的.dll文件以及其他平台上的共享库。 #### 二、JNA实例分析 根据题目提供的信息,本节将详细解析一个JNA的应用实例。首先,我们将介绍C语言源代码部分...
综上所述,`jna-3.3.0.jar`和`jna-3.3.0-platform.jar`是Java开发中调用本地资源的重要工具,它们提供了一种简便的方式让Java程序能够直接利用操作系统的能力,而无需深入学习C/C++编程。通过理解JNA的工作原理和...
开发者在项目中引入这个jar文件,就可以利用JNA提供的API来调用本地库。版本号"3.0.9"表示这是JNA的一个稳定版本,可能包含了一些错误修复和性能优化。 "examples.jar"则包含了使用JNA的示例代码,这对于初学者来说...
Java Native Access(JNA)是Java平台上的一个开源库,它允许Java代码与本地操作系统功能进行交互,无需编写C语言的动态链接库(DLL)或Java本机接口(JNI)代码。JNA提供了更简单的方式来调用操作系统API,极大地...
解压 【jna-***.jar中文文档.zip】,再解压其中的 【jna-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请...
标题中的“jna控制键盘”指的是使用Java Native Access (JNA) 库来实现对键盘输入的控制。JNA是Java平台上的一个开源库,它允许Java代码与本机库进行交互,无需编写C/C++的JNI代码。通过JNA,开发者可以直接调用操作...
**标题:“JNA—JNI终结者”** 这篇文章探讨的主题是Java Native Access (JNA) 和 Java Native Interface (JNI),两者都是Java平台上的技术,用于在Java应用程序中调用本地(非Java)代码。它们允许Java程序员与...