基于Java的文件监控程序设计与实现

合集下载

采用Java技术和Java 3D虚拟现实技术实现设备远程监控系统的设计

采用Java技术和Java 3D虚拟现实技术实现设备远程监控系统的设计

采用Java技术和Java 3D虚拟现实技术实现设备远程监控系统的设计设备的远程监控是制造系统远程监控中的重要组成部分,包括对设备的运行进行监视和控制,对设备可能出现的故障进行预测,对设备已经出现的故障进行诊断等内容。

图形图像信息是人类认识世界、掌握知识的重要方法。

资料表明人类从外界所获得知识,其中80%以上来自图形图像以及声音信息。

因而在远程监控系统设计中,特别是面向设备监控中,较多地包含图形图像信息以及声音信息,包括现场的视频信息以及将各种传感器信息转换成比较容易识别的图形信息。

然而,由于图形图像等视频信息和音频信息的数据量非常大,严重阻碍了具有海量数据的信息在远程监控系统中的使用,特别是在基于Intranet/Internet的远程监控系统中的应用。

因此,如何在只有较少信息量传输的情况下实现以视频和音频等多媒体信息为主要呈现方式的远程监控系统成为远程监控系统实现的主要原因之一。

本研究采用了传感器驱动的虚拟现实辅助监控的方法。

虚拟现实技术是指综合利用计算机图形系统和各种现实及控制等接口设备,在计算机上生成的、可交互的三维环境技术,具有沉浸(Immersion)、交互(Interaction)和构想(Imagination)等三个基本特征。

但由于这样的系统造价高昂,操作复杂,尚无法在普通的工作环境中得到应用。

目前虚拟现实的含义有所拓宽,即使用半沉浸和非沉浸技术,通过显示器对三维物体进行浏览的系统同样可以被称为虚拟现实系统,从而在更大的范围中普及和应用虚拟现实技术。

JAVA 3D是Java语言在三维图形领域的扩展,是一组API(Application Programming Interface),可以创建基于Web的、与互联网结合的三维交互环境的场景。

用户通过使用带有插件的普通浏览器,便可以观赏到由Java 3D创建的三维虚拟现实。

由于Java 3D易于实现、适合网络传输,交互性好等特点,因此,对建立基于Web的三维可视化交互式应用提供了一种很好的解决方案。

基于Java的网络安全监测系统设计与实现

基于Java的网络安全监测系统设计与实现
(2) 日志管理模块实现
利用Log4j记录系统日志和用户操作日志,实现日志的分类存储和检索功能。
(3) 告警管理模块实现
通过定时任务或监听器监测网络异常情况,当检测到异常时发送告警通知。
2. 前端开发
(1) 环境搭建
使用Vue.js框架搭建前端页面,通过Webpack打包工具进行项目构建。
(2) 数据可视化模块实现
五、总结与展望
通过本文对基于Java的网络安全监测系统设计与实现进行介绍,可以看出该系统能够有效监测网络安全情况并及时做出响应。未来,可以进一步完善系统功能,提升系统性能,以应对不断变化的网络安全挑战。
希望本文对读者在设计和实现基于Java的网络安全监测系统时有所帮助。感谢阅读!
网络安全监测系统主要包括以下功能模块: - 日志管理模块:记录系统运行日志、用户操作日志等信息。 - 告警管理模块:监测网络异常情况并及时发出告警。 - 安全策略管理模块:制定和管理网络安全策略。 - 数据分析模块:对网络数据进行实时分析和处理。 - 可视化展示模块:通过图表等形式直观展示监测结果。
2. 系统技术选型
基于Java语言的网络安全监测系统可以采用以下技术: - 后端框架:Spring Boot - 数据库:MySQL - 前端框架:Vue.js - 数据可视化:ECharts
3. 系统架构图
系统架构图
三、系统实现
1. 后端开发
(1) 环境搭建
首先搭建Java开发环境,配置Spring Boot框架,并连接MySQL数据库。
利用ECharts库实现监测数据的可视化展示,包括折线图、柱状图等形式。
3. 系统集成与测试
将前后端代码进行集成,并进行系统整体测试,确保系统各功能正常运行。

java视频监控系统中报警录像功能的实现.

java视频监控系统中报警录像功能的实现.

第29卷第17期Vol.29No.17计算机工程与设计ComputerEngineeringandDesign2008年9月Sept.2008基于Java的视频监控系统中报警录像功能的实现赵摘莹,陆颖瑜,张永林(暨南大学光电工程研究所,广东广州510632)要:利用Java的平台无关性和完整的网络支持,开发出基于Java的视频监控系统。

使用JMF(Java媒体框架)实现视音频捕获并每隔几秒截取监控区域的图像,利用Matlab进行图像对比并打包成Java程序,在监控区域出现异常情况时及时进行报警和录像。

测试结果表明,系统的报警录像功能实用可靠,满足实时监控需求。

关键词:视频监控;媒体框架;视音频捕获;图像对比;报警录像中图法分类号:TP277文献标识码:A文章编号:1000-7024(2008)17-4574-04 ImplementationofalarmandrecordfunctionofsurveillancesystembasedonJava ZHAOYing,LUYing-yu,ZHANGYong-lin(InstituteofOptoelectronicEngineering,JinanUniversity,Guangzhou510632,China) Abstract:Utilizingtheplatform-independenceofJavaandthecompletesupportenvironmentofnetwork,aremotevideosurveill ancesystembasedonJavatechnologyisexploited,whichusedJavamediaframework(JMF)tor ealizethecaptureofvideoandaudioandacquiredimagesinsurveillantregioneveryfewseconds .AndJavaprogrampackagedisusedbyJavaBuilder,anextensionofMatlabcompiler,toperfor mMatlabfunctionofimagecomparisoninordertoalarmandrecordthevideoautomaticallyonti meassoonastheabnormalconditiontookplaceinsurveilliantregion.Thetesthasverifiedthepr acticalityandreliabilityofalarmandrecordfunctionofthissystemthatitcanfulfilltherequirem entofthemarketforthereal-timesurveillance.Keywords:videosurveillance;JMF;captureofvideoandaudio;imagecomparison;alarmandrecord0引言现互通,这是网络程序最重要的性能。

基于JAVA平台的远程监控系统的设计与实现

基于JAVA平台的远程监控系统的设计与实现
o p me n t t o o 1 . Us e r c a n u s e I E a s t h e we b s e ve r r . I n J S P we c a n c a l l J a v a Be a n s o r e mb e d J A V A c o d e t o a c h i e v e t h e c o mb i n e b e t we e n J A vA a n d HTM L we b p a g e . a c h i e v e t h e I n t e r a c t i o n b e t we e n t h e we b p a g e . Cl i e n t a n d S e r v e r . Us e r s c a n e n t e r t h e s e r v e r ’ S I P a d d r e s s t o r e mo t e l y mo n i t o r b y b r o ws e r . Ke y wo r d s : B/ S Ar c h i t e c t u r e ; Re mo t e Mo n i t o r ; J a v a E E P l a t f o r m; J S P Mo d e 1 1
t r i b u t e d r e mo t e mo n i mr i n g s y s t e m b a s e d o n B/ S a r c h i t e c t u r e . Al l t e c h n o l o g y i s b a s e d o n J a v a E E p l a t f o r m . Us e t h e J S P Mo d l e 1 : J S P a n d J a v a Be a n a s z h e d e v e l o p me n t mo d l e . Us e t h e J S P l a n g u a g e a n d J a v a Be a n T e c h n o l o g y t o wr i t e f r o n t p a g e b a s e d o n t h e my e c l i p s e

基于JAVA的远程视频监控系统设计

基于JAVA的远程视频监控系统设计
3.移动视频监控
如今移动视频监控在电信运营的推动下,也有了新的进展,但对移动视频监控尚无明确的标准定义。业界认为,无论是视频采集端还具有移动性还是后台移动端具有移动性,都属于移动视频监控的范畴。例如,车载摄像机可以将一些实时情况上传给监控中心。此外,在一些危险场景下(如易燃易爆、烈性传染病、生化等危险区域),可采用无线监控对其进行监控。上述应用属于采集端具有移动性。中国电信所研究开发的“全球眼”,实现了图像前端采集和后台监控端都具有移动的性能,使得监控更加方便,“全球眼”是一种基于IP技术和宽带网络技术的可以实时的远程视频监控业务。分散、独立的采集点图像信息通过网络视频监控业务平台进行联网处理,以实现可以跨区域的统一监控、管理、存储,以此来达到用户进行远程视频监控、管理、信息传递的需求。所以移动化、高清化、智能化是视频监控发展的必然趋势。
A universal remote video monitoring system based on JAVA and JMF technology is designed, which has the characteristics of good performance, portability, and so on. Remote video monitoring system mainly includes two parts, respectively are mobile phone remote control terminal and locally controlled end.The paper focuses on the local system controlled end software.Locally controlled end module through the camera acquisition video image formation of streaming media, which will be displayed at the end of the local computer controlled. The compressed video image is sent to the remote control terminal by TCP / IP protocol socket communication, which realized the remote and local controlled end of video surveillance. Real time monitoring of remote video had realized at any time and anywhere. Through testing, the picture is smooth, clear, which meets the expected requirements of the design.

Java实现实时监听文件夹是否有新文件增加并上传服务器功能

Java实现实时监听文件夹是否有新文件增加并上传服务器功能

Java实现实时监听⽂件夹是否有新⽂件增加并上传服务器功能本⽂中主要陈述⼀种实时监听⽂件夹中是否有⽂件增加的功能,可⽤于实际⽂件上传功能的开发。

主要实现⽅式:(1)利⽤Timer的定时循环执⾏代码的功能;(2)利⽤WatchService实时监听⽂件夹是否有新⽂件增加,通过阻塞式IO流实现⽂件上传服务器。

代码如下:private static String path = "E:\\Kankan";public static void getFile() throws FileNotFoundException, IOException{final Timer timer = new Timer();timer.schedule(new TimerTask() {public void run() {WatchKey key;try {WatchService watchService = FileSystems.getDefault().newWatchService();Paths.get(path).register(watchService, StandardWatchEventKinds.ENTRY_CREATE);while (true) {File file = new File(path);//path为监听⽂件夹File[] files = file.listFiles();System.out.println("等待图⽚加载!");key = watchService.take();//没有⽂件增加时,阻塞在这⾥for (WatchEvent<?> event : key.pollEvents()) {String fileName = path+"\\"+event.context();System.out.println("增加⽂件的⽂件夹路径"+fileName);File file1 = files[files.length-1];//获取最新⽂件System.out.println(file1.getName());//根据后缀判断url = uploadFile(file1,uploadAddres);//上传服务器}if (!key.reset()) {break; //中断循环}}}catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}, 2000 , 3000);//第⼀个数字2000表⽰,2000ms以后开启定时器,第⼆个数字3000,表⽰3000ms后运⾏⼀次run}需要导⼊的jar包import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.nio.file.FileSystems;//阻塞式IO流jar包import java.nio.file.Paths;import java.nio.file.StandardWatchEventKinds;import java.nio.file.WatchEvent;import java.nio.file.WatchKey;import java.nio.file.WatchService;import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTask;⽂件上传服务器代码:/*** 将file⽂件上传到指定dir⽂件夹中* @param file:待上传⽂件* @param dir:指定路径* @throws FileNotFoundException* @throws IOException*/final static String uploadAddres = System.getProperty("catalina.home")+"\\webapps\\TiaoZhanB\\uploadFile";public static String uploadFile(File file , String dir) throws FileNotFoundException, IOException {String imgURL = null;try {InputStream in = new FileInputStream(file);System.out.println("服务器路径:" + dir);// 获取⽂件名称String fileName = file.getName();// 路径和⽂件名丢进file对象⾥File uploadFile = new File(dir, fileName);// 输出流OutputStream out = new FileOutputStream(uploadFile);// 设置⽂件⼤⼩1MBbyte[] buffer = new byte[1024 * 1024];int length;// ⽤循环从流中读取⽂件的⼤⼩while ((length = in.read(buffer)) > 0) {out.write(buffer, 0, length);}// 设置图⽚标题和全路径imgURL = "uploadFile/" + fileName;System.out.println("绝对路径为"+imgURL);// 关闭输⼊流输出流,释放内存in.close();out.close();} catch (Exception e) {e.printStackTrace();}return imgURL;}注:如果在MyEclipse中使⽤上述代码(eclipse不会出错),需要将使⽤的Java jre切换成⾃⼰安装的jre,原因在于myeclipse⾃带的jre没有阻塞式io流的jar包,⼀定会报错。

基于JVMTI实现Java线程的监控

基于JVMTI 实现Java 线程的监控JVMTI 工具接口随着多核CPU 技术的发展,多线程编程技术被广泛地应用,从而充分发挥整个系统的性能。

Java 语言对多线程编程提供了语言级的支持,可以方便地创建、运行、销毁线程。

然而,多线程的使用也给应用程序开发人员带来了巨大的挑战,不正确地使用多线程可能造成线程死锁或资源竞争,导致系统瘫痪。

为了帮助Java 开发人员诊断和跟踪Java 线程状态的切换,Sun 公司在Java 开发工具包(Java2 Software Development Kit, JDK)1.5.0 版本中引进了Java 虚拟机工具接口(Java Virtual Machine Toolkit Interface,JVMTI),用于替代在先前的JDK 版本中作为试验功能存在的Java 虚拟机剖析接口(Java Virtual Machine Profiling Interface,JVMPI)和Java 虚拟机调试接口(Java Virtual Machine Debugging Interface,JVMDI)。

通过JVMTI 接口可以创建代理程序(Agent)以监视和控制Java 应用程序,包括剖析、调试、监控、分析线程等等,其架构模型如图 1 所示。

图 1. JVMTI 架构模型Agent 可以向运行中的虚拟机实例订阅感兴趣的事件,当这些事件发生的时候,会以事件回调函数的方式激活代理程序,同时JVMTI 提供了众多的功能函数,以查询和控制Java 应用程序的运行状态。

Agent 通过JVMTI 所提供的接口与虚拟机进行通信,并同步监控虚拟机的运行状态,它与运行中的Java 应用程序是相对独立的,不会干扰程序的正常运行。

Agent 可以用任何支持 C 语言标准的本地语言来编写,并以动态链接库的方式存在;Java 程序启动的时候可以加载这个动态链接库。

基于JVMTI 接口构建的Agent 可以方便地实现对Java 线程状态切换的跟踪,从而使开发人员能够在运行时清楚地了解多线程应用程序中线程的工作情况,方便进行调试和除错。

Java实现的文件监控管理

Java实现的文件监控管理实现功能:实时监控指定目录下文件的增加 / 更新 / 删除情况.Java代码1.// monitor.file.FileMonitor.java2.package monitor.file;3.4./**5.*@date 2010-3-18 上午10:12:146.*@author dycc7.*@file monitor.file.FileMonitor.java8.*/9.public class FileMonitor {10.public static void main(String[] args) {11.FileSchedulerTask task = new FileSchedulerTask("D:\\T emp");12.FileScheduler monitor = new FileScheduler();13.monitor.schedule(task, new TimeStep());14.}15.}16.17.// monitor.file.FileScheduler.java18.package monitor.file;19.20.import java.util.Date;21.import java.util.Timer;22.import java.util.TimerTask;23.24./**25.*@date 2010-3-18 上午10:31:2626.*@author dycc27.*@file monitor.file.FileScheduler.java28.*/29.public class FileScheduler {30.// 定时器31.private final Timer timer;32.33.public FileScheduler(){34.timer = new Timer();35.}36.public FileScheduler(boolean isDaemon){37.// 是否为守护线程38.timer = new Timer(isDaemon);39.}40./**41.* 为定时器分配可执行任务42.* @param task43.* @param step44.*/45.public void schedule(Runnable task,TimeStep step){46.Date time = step.next();47.SchedulerTimerTask timeTask = new SchedulerTimerTa sk(task,step);48.// 安排在指定的时间 time 执行指定的任务 timetask49.timer.schedule(timeTask, time);50.// 此处不使用51.// public void schedule(TimerTask task, Date firstTime, long period)52.// 执行定时任务,而是使用 reSchedule 来重复执行任务,是因为首次执行时可能需要做一些额外的初始化,53.// 这样方便以后扩展.54.}55./**56.* 重新执行任务57.* @param task58.* @param step59.*/60.private void reSchedule(Runnable task,TimeStep step){61.Date time = step.next();62.SchedulerTimerTask timeTask = new SchedulerTimerTa sk(task,step);63.// 安排在指定的时间 time 执行指定的任务 timetask64.timer.schedule(timeTask, time);65.}66./**67.* 停止当前定时器68.*/69.public void cancle(){70.timer.cancel();71.}72./**73.* 定时任务74.* @author dycc75.*76.*/77.private class SchedulerTimerTask extends TimerTask{78.private Runnable task;79.private TimeStep step;80.81.public SchedulerTimerTask(Runnable task,TimeStep st ep){82.this.task = task;83.this.step = step;84.}85.@Override86.public void run() {87.// 执行指定任务88.task.run();89.// 继续重复执行任务90.reSchedule(task, step);91.}92.}93.}94.95.// monitor.file.FileSchedulerTask.java96.package monitor.file;97.98.import java.io.File;99.import java.util.HashMap;100.import java.util.HashSet;101.import java.util.Iterator;102.import java.util.Map;103.import java.util.Set;104.105./**106.*@date 2010-3-18 上午10:39:29107.*@author dycc108.*@file monitor.file.FileSchedulerTask.java109.*/110.public class FileSchedulerTask implements Runnable{ 111.112.private boolean firstRun = true;113.114.private String directory = "";115.// 初始文件信息116.private Map<String,Long> currentFiles = new HashMa p<String,Long>();117.// 当前文件信息118.private Set<String> newFiles = new HashSet<String>( );119.120./**121.* 构造函数122.*/123.public FileSchedulerTask(){124.125.}126.public FileSchedulerTask(String directory){127.this.directory = directory;128.}129./**130.* 在 run() 中执行具体任务131.*/132.public void run() {133.File file = new File(directory);134.if(firstRun){135.firstRun = false;136.// 初次运行137.loadFileInfo(file);138.System.out.println("----- init success -----");139.} else{140.// 检查文件更新状态[add,update]141.checkFileUpdate(file);142.// 检查被移除的文件[remove]143.checkRemovedFiles();144.// 清空临时文件集合145.newFiles.clear();146.}147.}148./**149.* 初始化文件信息150.* @param file151.*/152.private void loadFileInfo(File file){153.if(file.isFile()){154.currentFiles.put(file.getAbsolutePath(), stModifie d());155.return;156.}157.File[] files = file.listFiles();158.for(int i=0;i<files.length;i++){159.loadFileInfo(files[i]);160.}161.}162./**163.* 检查文件更新状态164.* @param file165.*/166.private void checkFileUpdate(File file){167.if(file.isFile()){168.// 将当前文件加入到 newFiles 集合中169.newFiles.add(file.getAbsolutePath());170.//171.Long lastModified = currentFiles.get(file.getAbsoluteP ath());172.if(lastModified == null){173.// 新加入文件174.currentFiles.put(file.getAbsolutePath(), stModifie d());175.System.out.println("添加文件:" + file.getAbsolutePath());176.return;177.}178.if(lastModified.doubleValue() != stModified()){ 179.// 更新文件180.currentFiles.put(file.getAbsolutePath(), stModifie d());181.System.out.println("更新文件:" + file.getAbsolutePath());182.return;183.}184.return;185.} else if(file.isDirectory()){186.File[] files = file.listFiles();187.if(files == null || files.length == 0){188.// 没有子文件或子目录时返回189.return;190.}191.for(int i=0;i<files.length;i++){192.checkFileUpdate(files[i]);193.}194.}195.}196./**197.* 检查被移除的文件198.*/199.private void checkRemovedFiles(){200.// 增加或更新时,newFiles.size() == currentFiles.size() 201.// 删除时, newFiles.size() < currentFiles.size()202.// 不可能出现 newFiles.size() > currentFiles.size() 203.if(newFiles.size() == currentFiles.size()){204.// 增加或更新时没有被移除的文件,直接返回205.return;206.}207.Iterator<String> it = currentFiles.keySet().iterator();208.while(it.hasNext()){209.String filename = it.next();210.if(!newFiles.contains(filename)){211.// 此处不能使用 currentFiles.remove(filename);从 map 中移除元素,212.// 否则会引发同步问题.213.// 正确的做法是使用 it.remove();来安全地移除元素.214.it.remove();215.System.out.println("删除文件:" + filename);216.}217.}218.}219./**220.* 起始目录222.*/223.public String getDirectory() {224.return directory;225.}226.public void setDirectory(String directory) {227.this.directory = directory;228.}229.}230.231.// monitor.file.TimeStep.java232.package monitor.file;233.234.import java.util.Calendar;235.import java.util.Date;236.237./**238.*@date 2010-3-18 上午10:12:14239.*@author dycc240.*@file monitor.file.TimeStep.java241.*/242.public class TimeStep {243.private Calendar calendar = Calendar.getInstance(); 244.// calendar field245.private int field = Calendar.SECOND;246.// the amount of the date or time247.private int amount = 10;248.249./**250.* field252.*/253.public int getField() {254.return field;255.}256.public void setField(int field) {257.this.field = field;258.}259./**260.* amount261.* @return262.*/263.public int getAmount() {264.return amount;265.}266.public void setAmount(int amount) {267.this.amount = amount;268.}269./**270.* 获取时间271.* @exception IllegalArgumentException if field is unkn own272.* @return273.*/274.public Date next(){275.calendar.add(field, amount);276.return calendar.getTime();277.}278.}。

基于Java的网络监控系统设计及应用

311 J ava Applet 设计 Java Applet 是从 Web 服务器端下载 ,在浏览器端执
行的 Java 小应用程序 。Applet 作为客户端程序不需要进 行完整的数据库操作 ,它只需要知道用户输入和传递的 数据是什么 ,得到的结果如何表示 。Applet 负责提供用 户界面和与 Web 服务器端的 Java Servlet 进行通信 。当 Applet 与 Servlet 建立 TCP 连接后 ,Web 服务器会保留此 连接直到客户端与服务器的通信完毕 。在此期间 ,客户 端与服务器的通信均通过此连接进行 ,不必为客户机的 每个连接请求都建立新连接 。由于在监视过程中 ,客户 机会不断向 Web 服务器请求最新的数据 ,单一的 TCP 连 接就会大大提高通信的效率 。
在 Intranet 上运用三层体系结构的优势是显而易见 的 。然而 ,实现三层体系结构却有不同的解决方案 。实 践证明 ,在 Web 上基于 Java 技术的三层体系结构是一个
收稿日期 : 2002207213 ; 修返日期 : 2002209216
合理的选择 。
2 基于 J ava 的三层体系结构
1 引言
随着自动化技术的日新月异 ,当今企业工业自动化 的程度越来越高 。同时 ,由新技术革命引发的信息技术 革命在世界范围内掀起了信息化热潮 。要在竞争愈演 愈烈的各行各业中立于不败之地 ,把自动化技术和计算 机网络技术结合起来 ,提高企业信息化管理水平和加强 计算机信息系统建设就至关重要 。
Intranet (企业内部网) [1] 技术主要是面向企业 ,为企 业的各项管理 、业务提供网络服务 。在 Intranet 上建立 Web 平台 ,不但可以使企业的员工充分共享企业的信息 资源 ,还可以使企业的管理人员不必亲临现场就能及时 了解企业的生产现状 ,做出实时的决策 。现在的 Intranet 大都采用 Browser / Web Server / Web Database 的三层体 系结构[2] 。在这样的体系结构中 ,复杂的计算和任务处 理都集中在服务器端来完成 ,而客户端只是把计算的结 果以网页的形式呈现给用户或接收用户输入的简单的 控制数据 。因此 ,客户端趋向于瘦型机结构 ,常常只需 要浏览器就够了 ,这样就简化了客户端的环境配置 ,缩 短了软件的开发周期 ,使得系统变得容易操作 、维护和 升级 ,也使得企业数据能够集中的管理和发布 。

Java实现实时监控目录下文件变化的方法

Java实现实时监控⽬录下⽂件变化的⽅法⼀、commons-io⽅法1、使⽤Commons-io的monitor下的相关类可以处理对⽂件进⾏监控,它采⽤的是观察者模式来实现的(1)可以监控⽂件夹的创建、删除和修改(2)可以监控⽂件的创建、删除和修改(3)采⽤的是观察者模式来实现的(4)采⽤线程去定时去刷新检测⽂件的变化情况2、引⼊commons-io包,需要2.0以上。

<!-- https:///artifact/commons-io/commons-io --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>3、编写继承FileAlterationListenerAdaptor的类FileListener。

import java.io.File;import mons.io.monitor.FileAlterationListenerAdaptor;import mons.io.monitor.FileAlterationObserver;import org.apache.log4j.Logger;/*** ⽂件变化监听器* 在Apache的Commons-IO中有关于⽂件的监控功能的代码. ⽂件监控的原理如下:* 由⽂件监控类FileAlterationMonitor中的线程不停的扫描⽂件观察器FileAlterationObserver,* 如果有⽂件的变化,则根据相关的⽂件⽐较器,判断⽂件时新增,还是删除,还是更改。

(默认为1000毫秒执⾏⼀次扫描)*/public class FileListener extends FileAlterationListenerAdaptor {private Logger log = Logger.getLogger(FileListener.class);/*** ⽂件创建执⾏*/public void onFileCreate(File file) {("[新建]:" + file.getAbsolutePath());}/*** ⽂件创建修改*/public void onFileChange(File file) {("[修改]:" + file.getAbsolutePath());}/*** ⽂件删除*/public void onFileDelete(File file) {("[删除]:" + file.getAbsolutePath());}/*** ⽬录创建*/public void onDirectoryCreate(File directory) {("[新建]:" + directory.getAbsolutePath());}/*** ⽬录修改*/public void onDirectoryChange(File directory) {("[修改]:" + directory.getAbsolutePath());}/*** ⽬录删除*/public void onDirectoryDelete(File directory) {("[删除]:" + directory.getAbsolutePath());}public void onStart(FileAlterationObserver observer) {// TODO Auto-generated method stubsuper.onStart(observer);}public void onStop(FileAlterationObserver observer) {// TODO Auto-generated method stubsuper.onStop(observer);}}4、实现main⽅法public static void main(String[] args) throws Exception{// 监控⽬录String rootDir = "D:\\apache-tomcat-7.0.78";// 轮询间隔 5 秒long interval = TimeUnit.SECONDS.toMillis(1);// 创建过滤器IOFileFilter directories = FileFilterUtils.and(FileFilterUtils.directoryFileFilter(),HiddenFileFilter.VISIBLE);IOFileFilter files = FileFilterUtils.and(FileFilterUtils.fileFileFilter(),FileFilterUtils.suffixFileFilter(".txt"));IOFileFilter filter = FileFilterUtils.or(directories, files);// 使⽤过滤器FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir), filter); //不使⽤过滤器//FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir));observer.addListener(new FileListener());//创建⽂件变化监听器FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer);// 开始监控monitor.start();}⼆、使⽤JDK7提供的WatchServicepublic static void main(String[] a) {final Path path = Paths.get("D:\\apache-tomcat-7.0.78");try (WatchService watchService = FileSystems.getDefault().newWatchService()) {//给path路径加上⽂件观察服务path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE,StandardWatchEventKinds.ENTRY_MODIFY,StandardWatchEventKinds.ENTRY_DELETE);while (true) {final WatchKey key = watchService.take();for (WatchEvent<?> watchEvent : key.pollEvents()) {final WatchEvent.Kind<?> kind = watchEvent.kind();if (kind == StandardWatchEventKinds.OVERFLOW) {continue;}//创建事件if (kind == StandardWatchEventKinds.ENTRY_CREATE) {System.out.println("[新建]");}//修改事件if (kind == StandardWatchEventKinds.ENTRY_MODIFY) {System.out.println("修改]");}//删除事件if (kind == StandardWatchEventKinds.ENTRY_DELETE) {System.out.println("[删除]");}// get the filename for the eventfinal WatchEvent<Path> watchEventPath = (WatchEvent<Path>) watchEvent; final Path filename = watchEventPath.context();// print it outSystem.out.println(kind + " -> " + filename);}boolean valid = key.reset();if (!valid) {break;}}} catch (IOException | InterruptedException ex) {System.err.println(ex);}}三、以上⽅法都可以实现对相应⽂件夹得⽂件监控,但是在使⽤jdk7提供的API时,会出现些许问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Java的文件监控程序设计与实现作者:周佳宁赵彬翔来源:《电子技术与软件工程》2017年第23期摘要由于公司的各个部门需要大量的数据进行处理和接收,所以公司部门需要按照接收到的信息,存放于指定的目录中,将信息进行整合和归纳,并且将文件重新进行命名和靠背。

通过Java的文件监控程序,能够有效的帮助用户,在实施数据的调整和归纳的过程中将文件信息进行监控和采集。

能够方便客户在查找信息、进行历史信息的搜集和修改上快速进行,本文针对Java的文件监控程序的设计和实现进行理论探讨,洗完更够对讲来Java监控程序的设计和实现提供一定的参考价值。

【关键词】Java 文件监控程序设计实现1 设计思路与总体框架1.1 设计思路Java文件在进行设计思路,是需要针对大量需要接收和处理的数据资源进行汇总和预设,根据不同数据的种类进行分类、分时间段的保存。

每天都需要对数据的分类与存储工作,所以会浪费大量的人力资源、时间资源。

所以,Java的文件监控程序的设计顺其自然的产生了。

这是为了能够让公司各个部门,以及需要用到数据进行采集、接收、处理、分类的其他机构都能够高效率的进行工作的一种程序。

Java的文件监控程序的设计与实现,也是为了能够顺利的进行文件处理,在桌面版的自动监控、程序进行中,按照设计好的参数,自动监控数据处理目录,简化数据处理工作,从而加快服务效率。

1.2 总体框架Java文件监控程序的总体框架,主要是为了在进行处理数据与处理业务时,需要按照所要处理的数据进行流程梳理,明确总体业务流程的走向。

按照不同的功能对业务流程进行分类细化处理。

不同的板块,分类的原则不同,需要处理的数据也不同。

按照数据的接收情况、处理情况、操作情况需要设置不同的板块,将流程分段处理,完善各个环节的细化工作。

然后设计好模板需要的参数。

数据在接收的部分,需要按照不同数据的总体进行接收。

通过 ftp 方式获取远程数据,并且在接收之后,迅速保存在本地的目录中。

从数据的处理模块方面,对于数据的整体完成程度,以及数据的接收情况进行统一的验证和考察。

同时对于数据产生异常的情况,可以在数据板块中进行数据的检查。

通过监控,还可以看出是哪个阶段出现了问题,并且对数据的处理进行重新操作。

在进行文件操作的过程中,不同类别的数据,以及接收的文件名称不同进行分类存储。

这需要事前进行参数设置,在相应的板块中来实现整体流程的规范。

比如:文件、数据的接收时间、数据的分类情况、数据的命名规则。

在进行程序处理是,要按照总体流程的程序进行。

2 桌面框架的实现通过桌面框架的方式实现Java类的swt库类实现。

优于swt本身就属于一个库类。

可以通过不同的电脑终端接收到的文件端口不同,按照不同端口上的GUI空间进行处理。

并且可以通过swt软件开发程序,进行桌面应用。

使用的主机相同的外感官感受。

从整体布局当中分析,可以看出当前shell库类,在生成一个主页面会通过主页面上安装和使用的swt库类的控件,进行页面窗口元素的布局和控制。

通过使用的shell类的生成窗体进行操作,并且能够在操作的过程中现实窗体的位置、大小等基本信息。

同时再使用MenuItem类进行设置窗体的各项功能的使用,按照设置窗口的各项功能,开展制定的菜单进行显示。

另外,还可以通过shell.set Back ground Image()进行窗口背景的设置。

同时进行文字的选项点击之后开始进入相应的子页面,通过子页面开展各项元素的位置以及相应的文字选项进行控制,这就需要应用到Group来设置。

比如:进行参数设置,需要进入相应的页面开展初始化组合。

还需要通过: group_cs.set Layout()进行框架的整体布局,可以选用水平方向还是垂直方向。

还可以使用使用 set Bounds()设置子页面的位置,开展文字描述。

最后,需要使用shell.set Enabled(true)让控件变得更加具有可见性,实现整体框架的程序编程。

3 主要功能模板3.1 数据接收板块数据接收板块主要是负责整体程序的文件信息、数据的而接收,并且将接收到的信息放在指定的目录中,让文件信息、数据能够快速进行分类。

根据不同的文件名称,还可以在接收到数据是通过分类类型进行分类。

同时模块功能在实现数据的获取是,首先需要获取到初始化的操作权限,这就需要开展ftP进行初始化设置。

在数据接收的过程中,还需要生成 Ftp Client的对象类,开展实例双向参数分别进行远程的主机IP定位,连接主机地址,将编码程序进行连接。

然后,使用实例的方法函数 login 进行 ftp 的远程操作处理。

在操作中,还需要将两个参数的用户名和密码进行ftp连接。

实施初始需要运用到的语句为: new Ftp Client(hots,21);远程连接是需要运用到的语句为: ftp.log-in(user,password)。

如果因为网络故障无法连接到其他端口进行ftp目录的连接,需要根据不同的情况输出信息交给客户。

在连接的过程中就可以进行操作。

连接成果之后,使用list()可以得到远程目录的文件信息,将信息进行数据流入,根据文件对象进行缓冲和读取。

由于缓冲的过程中字节大小不同,还需要利用:byte[]buffer=new byte[1024] 设置为统统概念以的1024字节进行处理。

将数据文件进行字节分段读取,通过 File Out put Stream 文件进行输入操作,写入本地目录中存放。

3.2 数据处理板块数据处理板块,主要是根据数据的总结进行分类。

获取数据,分类进行储存的一种方式。

这种方式实现需要根据 File 文件类以及其功能,该函数进行系统的操作。

首先设置实例 File file=new File开展制定目录,然后根据其对象会理函数进行文件数据的浏览。

将所有文件的实体进行压缩,或者其他环节的处理操作。

这需要对数据进行循环教研操作,得到每一个文件,并根据指定的分类的准确性进行校验。

同类型的数据进行操作。

对于接收到的不完整数据,需要剔除。

保障数据的整体性和可用性。

在验证的过程中,需要对文件、数据进行验证。

验证的方法主要是通过 File 类的 length()处理开展的。

将文件进行循环过后,对于其真实的大小与高标准大小进行对比,如果大小不符合,即为一场数据,需要进行删除操作,如果数据的大小符合要求,那么将需要的文件放入指定的目录中,对于文件的名称也需要按照规定进行更改,才能够放入目录,进存放操作。

Java的数据监控程序,在进行监控部分的使用时,需要对于Java的操作 Mythread 的程序进行具体的操作,开展截面上的监控按钮,进行文件的处罚监控模式运行,并且对于 Runnable 的方法实现线程操作处理,并且通过监控环节将没有处理的文件开展休眠模式,休眠模式一共设置为五秒钟,可以根据Thread.sleep(5000)的操作制定设置的睡眠时间。

3.3 参数设置板块最后,进行参数设置板块的参数数据进行重新的设置和读取。

需要在功能上进行创新和改革。

所以ftp在连接的过程中,需要对基本的信息、监控的目录分类情况、文件的操作流程、以及最先实现的配置信息的写入进行读取。

首先,进行 Document.create Document()创建函数document作为操作对象,使用add Element(“trees”)开展新的措施,创建一个xml文件的最中目录,然后将目录剑豪之后,需要进行对 Element为目标的 add Attribute()的配置节点加入。

比如说:将远程的操作ftp作为访问的参数,能够访问到远程的用户名与密码进行一步分操作,那么使用 tree Element.Add At-tribute(“ftp name”,”ftp user”),tree Element.add At-tribute(“ftp pass”,”123”)的操作,就可以帮助配置节点加入完成最终的参数设置板块。

在操作的过程中,还需要进行各项参数信息的设置工作,在完成之后,可以通过XML文件进行兑现的写入,比如:XML Writer writer=new XML Writer(new File-Out put Stream))完成最终的文件配置生成。

4 结论本文主要研究的是 Java 的文件监控程序设计与实现,通过对于如何实现进行理论的阐述,其次是通过实时接收数据,并且能够有效保存数据的数据接收模板的研究,其次对于接受的数据进行验证和循环计算的数据处理板块的研究,对于对文件进行分类、操作、存储开展数据应用,最后将各个相关的参数进行功能配置,设置好参数设置板块。

开展了Java库类swt的实现整体的用户可视化窗体操作功能,随后对于xml的文件操作。

文件读取、ftp实现类的如何操作使用,开展了对Java的总体程序的各项思路以及实现方法进行了设计和讨论,结合应用的程序,让研究者有了进一步的了解。

参考文献[1]王天一,王通,朱红.论JAVA编程中异常处理的方法与技巧[J].科技展望,2017,27(22):15.[2]王晓亮.JAVA虚拟机内存使用优化研究与应用[J].价值工程,2017,36(21):221-222.[3]昝道广.Java程序开发数据库与框架应用[J/OL].电子技术与软件工程,2017(11):178.[4]温立辉.Java语言拦截机制之实现原理[J].科技风,2017(03):62.[5]柳郁,孙小兵,李斌.面向Java程序包的代码概要自动生成技术研究[J/OL].计算机科学与探索,2017,11(02):212-220.作者简介周佳宁(1995-),男,山西省太原市人。

大学本科学历。

赵彬翔(1995 -),男,山西省长治市人。

大学本科学历。

作者单位山西农业大学信息学院山西省晋中市 030801。

相关文档
最新文档