Advertisement

(java8版本)文件目录监听

  • 5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:JAVA


简介:
基于Java 8开发一个对文件目录进行监控的系统,该系统能够执行文件创建、修改以及删除等操作。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 代码中的功能
    优质
    简介:本文介绍了在编程中实现目录监听功能的方法和技术,帮助开发者实时监控文件系统的变动。 Java实现实时目录监听的示例代码如下: 首先需要使用`java.nio.file.WatchService`接口来创建一个监控服务,并将要监听的目录注册到该服务中。 ```java import java.io.IOException; import java.nio.file.*; public class DirectoryWatcher { private static void registerDirectory(Path dir, WatchService wservice) throws IOException { // Register the directory with the watch service for ENTRY_CREATE events. dir.register(wservice, StandardWatchEventKinds.ENTRY_CREATE); } public static void main(String[] args) { try (WatchService wservice = FileSystems.getDefault().newWatchService()) { Path path = Paths.get(/path/to/directory); registerDirectory(path, wservice); while(true){ WatchKey key; try { key = wservice.take(); } catch (InterruptedException ex) { return; } for (WatchEvent event : key.pollEvents()) { Path filename = ((WatchEvent)event).context(); // Handle the file event. System.out.format(%s: %s\n, event.kind().name(), filename); } } } catch (IOException ex) { ex.printStackTrace(); } } } ``` 对于Servlet的实现,一个简单的示例代码如下: ```java import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(/Hello) public class Hello extends HttpServlet { private static final long serialVersionUID = 1L; public Hello() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType(text/html); // 实际的业务逻辑处理代码可以添加到这里 PrintWriter out = response.getWriter(); out.println(); out.println(); out.print(Hello World); out.println(); } } ``` 以上是Java中实现实时目录监听和Servlet的基本示例,可以根据实际需求进行扩展。
  • Qt键盘(改进
    优质
    本段介绍如何在Qt框架中实现更高效的键盘事件监听功能,通过优化和改进原有的监听机制来提高应用程序响应速度及用户体验。 使用QT实现了全键盘监听。如果有疑问可以在博客下留言,谢谢下载。
  • Oracle 11g 配置
    优质
    《Oracle 11g监听配置》旨在详细介绍如何设置和管理Oracle数据库11g版本中的监听器。此文档涵盖了监听服务的基本概念、配置步骤及常见问题解决方法,是数据库管理员优化网络连接的关键资源。 正确配置安装的Oracle 11g监听文件。我制作了一份详细的Oracle 11g安装教程,请参考相关文档内容。
  • VB更改
    优质
    简介:VB监测文件目录更改是一种自动化技术,通过编写Visual Basic脚本实时监控指定文件夹内文件的变化情况(包括增加、删除或修改),以实现高效的数据管理和系统维护。 该程序可以监视Windows的文件目录操作:包括重命名、新建或删除文件及目录;更改文件关联;插入或取出CD以及添加或移除网络共享等功能都可以被记录下来。
  • ScriptListener.8li
    优质
    ScriptListener.8li监听脚本是一款用于监控和响应特定事件或操作的自动化工具。它通过解析并执行预先定义好的脚本来实现高效的任务处理与系统维护,适用于软件开发、网站管理等场景。 Photoshop脚本自动生成工具ScriptListener.8li可以将Photoshop操作自动转换为JavaScript或VB语言。使用说明可以在相关文档或教程中找到。
  • Ext.js事
    优质
    本教程深入讲解如何在Ext.js框架中使用事件监听器来增强用户界面的交互性和响应性。通过实例解析,帮助开发者掌握绑定、触发和管理组件事件的关键技术。 ext封装得比较死板,其中包含了15个常用的ext.js触发事件和监听事件。我对ext的了解不是很深入,但这些内容是我经常遇到的。
  • Python变动
    优质
    本教程详细介绍如何使用Python脚本来监控文件和目录的变化情况,包括文件的创建、修改与删除等操作。通过实例讲解了watchdog库的应用方法,帮助开发者实现自动化运维任务。 ### Python 监控文件或目录变化 在 IT 领域中,监控文件或目录的变化是一个重要需求,尤其是在需要实时捕捉数据更改、备份关键文件等情况时更为必要。Python 提供了多种方法来实现这一功能,例如使用 `pyinotify` 库监听文件系统事件。下面将详细介绍如何利用 Python 实现对文件或目录的监控,并执行相应的自动化任务。 #### 一、基础知识介绍 在开始之前,我们需要了解几个基础概念: 1. **文件系统事件**:当文件或目录被创建、删除、修改时触发的事件。 2. **事件处理程序**:用于处理特定类型文件系统事件的功能函数或类。 3. **监控工具**:Python 提供的库(如 `pyinotify`)可以帮助我们监听和响应文件系统的变更。 #### 二、环境准备 为了实现文件监控功能,首先需要安装必要的 Python 库。本示例中使用的库包括 `pyinotify` 和 `paramiko`. 1. **安装 pyinotify** ```bash pip install pyinotify ``` 2. **安装 paramiko** ```bash pip install paramiko ``` `paramiko` 是一个用于 SSH 协议的 Python 实现,这里主要用于远程文件传输。 #### 三、核心代码实现 接下来我们将详细分析给定的部分代码,并解释其工作原理。 ##### 1. 导入依赖库 ```python import paramiko, os, sys, datetime, time, MySQLdb from pyinotify import WatchManager, Notifier, ProcessEvent, IN_DELETE, IN_CREATE, IN_MODIFY ``` 这里导入了多个库,包括 `paramiko` 用于远程连接和文件传输、`os` 和 `sys` 用于操作系统相关的操作、`datetime` 和 `time` 处理日期时间信息以及 MySQLdb 进行数据库操作。此外还有 pyinotify 库来监听文件系统事件。 ##### 2. 配置参数 ```python GM_path = homeasktao center_hostname = 192.168.1.100 center_username = root center_password = 123456 center_port = 63008 ``` 这些变量定义了监控的目标路径、远程服务器的信息等。 ##### 3. 创建日志表 ```python CREATE TABLE `wddel_log.status_sql` ( `ip` varchar(16) NOT NULL COMMENT 机器IP, `tar_name` varchar(50) NOT NULL COMMENT 备份文件名字, `md5` varchar(50) NOT NULL COMMENT 备份文件MD5, `flag` int(2) NOT NULL COMMENT 0:成功; 1:失败, `error_log` varchar(100) NOT NULL COMMENT 错误日志, `uptime` datetime NOT NULL COMMENT 更新时间, KEY `ip` (`ip`), KEY `uptime` (`uptime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ``` 这段 SQL 语句用于创建一个记录监控过程中关键信息的日志表,包括 IP 地址、文件名、MD5 值等。 ##### 4. 日志记录函数 ```python def log2db(ip, tar_name, md5, flag, error=0): try: # ... (省略部分代码) except Exception as e: print(e) ``` 此函数用于将监控结果写入数据库。它会检查数据库中是否存在该 IP 的记录,如果不存在,则插入新记录;若存在则更新。 ##### 5. 获取本地IP地址 ```python def find_ip(): ip = os.popen(sbinip a | grep global eth0).readlines()[0].split()[1].split()[0] if 192.168. in ip: ip = os.popen(sbinip a | grep global eth1).readlines()[0].split()[1].split()[0] return ip ``` 这个函数通过执行系统命令来获取当前机器的 IP 地址。 ##### 6. 文件 MD5 计算 ```python def md5sum(file_name): if os.path.isfile(file_name): f = open(file_name, rb) py_ver = sys.version[:3] if py_ver == 2.4: import md5 as hashlib else: import hashlib md5 = hashlib.md5(f.read()).hexdigest() ``` 此函数用于计算文件的 MD5 值,用于后续的数据校验。 #### 四、整体流程 1. **监听文件系统事件**:使用 `pyinotify` 监听指定路径下的文件系统事件。 2. **事件处理**:当
  • Oracle 11g因日志过大而无法启动2
    优质
    当Oracle 11g数据库由于监听器日志文件体积膨胀导致监听服务无法正常运行时,需要采取措施清理或旋转日志文件以恢复监听器功能。 Oracle 11g的监听日志文件过大导致监听无法启动。