- 浏览: 201643 次
- 性别:
- 来自: 青岛
最新评论
-
sunysh005:
界面太丑了,功能没有问题
SWFUpload+commons-fileupload 上传文件 -
liwh1989:
liwh1989 写道
SWFUpload+commons-fileupload 上传文件 -
liwh1989:
...
SWFUpload+commons-fileupload 上传文件 -
liwh1989:
SWFUpload+commons-fileupload 上传文件 -
貌似掉线:
已用上。多谢!
native2ascii的 java实现
实现功能:实时监控指定目录下文件的增加 / 更新 / 删除 情况.
// monitor.file.FileMonitor.java package monitor.file; /** *@date 2010-3-18 上午10:12:14 *@author dycc *@file monitor.file.FileMonitor.java */ public class FileMonitor { public static void main(String[] args) { FileSchedulerTask task = new FileSchedulerTask("D:\\Temp"); FileScheduler monitor = new FileScheduler(); monitor.schedule(task, new TimeStep()); } } // monitor.file.FileScheduler.java package monitor.file; import java.util.Date; import java.util.Timer; import java.util.TimerTask; /** *@date 2010-3-18 上午10:31:26 *@author dycc *@file monitor.file.FileScheduler.java */ public class FileScheduler { // 定时器 private final Timer timer; public FileScheduler(){ timer = new Timer(); } public FileScheduler(boolean isDaemon){ // 是否为守护线程 timer = new Timer(isDaemon); } /** * 为定时器分配可执行任务 * @param task * @param step */ public void schedule(Runnable task,TimeStep step){ Date time = step.next(); SchedulerTimerTask timeTask = new SchedulerTimerTask(task,step); // 安排在指定的时间 time 执行指定的任务 timetask timer.schedule(timeTask, time); // 此处不使用 // public void schedule(TimerTask task, Date firstTime, long period) // 执行定时任务,而是使用 reSchedule 来重复执行任务,是因为首次执行时可能需要做一些额外的初始化, // 这样方便以后扩展. } /** * 重新执行任务 * @param task * @param step */ private void reSchedule(Runnable task,TimeStep step){ Date time = step.next(); SchedulerTimerTask timeTask = new SchedulerTimerTask(task,step); // 安排在指定的时间 time 执行指定的任务 timetask timer.schedule(timeTask, time); } /** * 停止当前定时器 */ public void cancle(){ timer.cancel(); } /** * 定时任务 * @author dycc * */ private class SchedulerTimerTask extends TimerTask{ private Runnable task; private TimeStep step; public SchedulerTimerTask(Runnable task,TimeStep step){ this.task = task; this.step = step; } @Override public void run() { // 执行指定任务 task.run(); // 继续重复执行任务 reSchedule(task, step); } } } // monitor.file.FileSchedulerTask.java package monitor.file; import java.io.File; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; /** *@date 2010-3-18 上午10:39:29 *@author dycc *@file monitor.file.FileSchedulerTask.java */ public class FileSchedulerTask implements Runnable{ private boolean firstRun = true; private String directory = ""; // 初始文件信息 private Map<String,Long> currentFiles = new HashMap<String,Long>(); // 当前文件信息 private Set<String> newFiles = new HashSet<String>(); /** * 构造函数 */ public FileSchedulerTask(){ } public FileSchedulerTask(String directory){ this.directory = directory; } /** * 在 run() 中执行具体任务 */ public void run() { File file = new File(directory); if(firstRun){ firstRun = false; // 初次运行 loadFileInfo(file); System.out.println("----- init success -----"); } else{ // 检查文件更新状态[add,update] checkFileUpdate(file); // 检查被移除的文件[remove] checkRemovedFiles(); // 清空临时文件集合 newFiles.clear(); } } /** * 初始化文件信息 * @param file */ private void loadFileInfo(File file){ if(file.isFile()){ currentFiles.put(file.getAbsolutePath(), file.lastModified()); return; } File[] files = file.listFiles(); for(int i=0;i<files.length;i++){ loadFileInfo(files[i]); } } /** * 检查文件更新状态 * @param file */ private void checkFileUpdate(File file){ if(file.isFile()){ // 将当前文件加入到 newFiles 集合中 newFiles.add(file.getAbsolutePath()); // Long lastModified = currentFiles.get(file.getAbsolutePath()); if(lastModified == null){ // 新加入文件 currentFiles.put(file.getAbsolutePath(), file.lastModified()); System.out.println("添加文件:" + file.getAbsolutePath()); return; } if(lastModified.doubleValue() != file.lastModified()){ // 更新文件 currentFiles.put(file.getAbsolutePath(), file.lastModified()); System.out.println("更新文件:" + file.getAbsolutePath()); return; } return; } else if(file.isDirectory()){ File[] files = file.listFiles(); if(files == null || files.length == 0){ // 没有子文件或子目录时返回 return; } for(int i=0;i<files.length;i++){ checkFileUpdate(files[i]); } } } /** * 检查被移除的文件 */ private void checkRemovedFiles(){ // 增加或更新时,newFiles.size() == currentFiles.size() // 删除时, newFiles.size() < currentFiles.size() // 不可能出现 newFiles.size() > currentFiles.size() if(newFiles.size() == currentFiles.size()){ // 增加或更新时没有被移除的文件,直接返回 return; } Iterator<String> it = currentFiles.keySet().iterator(); while(it.hasNext()){ String filename = it.next(); if(!newFiles.contains(filename)){ // 此处不能使用 currentFiles.remove(filename);从 map 中移除元素, // 否则会引发同步问题. // 正确的做法是使用 it.remove();来安全地移除元素. it.remove(); System.out.println("删除文件:" + filename); } } } /** * 起始目录 * @return */ public String getDirectory() { return directory; } public void setDirectory(String directory) { this.directory = directory; } } // monitor.file.TimeStep.java package monitor.file; import java.util.Calendar; import java.util.Date; /** *@date 2010-3-18 上午10:12:14 *@author dycc *@file monitor.file.TimeStep.java */ public class TimeStep { private Calendar calendar = Calendar.getInstance(); // calendar field private int field = Calendar.SECOND; // the amount of the date or time private int amount = 10; /** * field * @return */ public int getField() { return field; } public void setField(int field) { this.field = field; } /** * amount * @return */ public int getAmount() { return amount; } public void setAmount(int amount) { this.amount = amount; } /** * 获取时间 * @exception IllegalArgumentException if field is unknown * @return */ public Date next(){ calendar.add(field, amount); return calendar.getTime(); } }
评论
6 楼
LaoV
2015-03-11
推荐一个文件监控的插件 JNotify
http://www.weixuehao.com/archives/350
这个插件还算不错!
适合在windows下,和linux下使用。
http://www.weixuehao.com/archives/350
这个插件还算不错!
适合在windows下,和linux下使用。
5 楼
zcx000000
2012-10-10
linux下的能用吗?文件目录是怎么写?
4 楼
damoqiongqiu
2011-07-05
很帅,标记一下,马上会用到
3 楼
dyccsxg
2010-11-16
测试了一下 commons-io 中的文件监控
下载:http://commons.apache.org/io/download_io.cgi
下载:http://commons.apache.org/io/download_io.cgi
package org.demo.file; import java.util.concurrent.TimeUnit; import org.apache.commons.io.filefilter.FileFilterUtils; import org.apache.commons.io.monitor.FileAlterationMonitor; import org.apache.commons.io.monitor.FileAlterationObserver; /** * 文件监控测试 * @author * @date 2010-11-16 * @file org.demo.file.FileMonitor.java */ public class FileMonitorTest { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // 监控目录 String rootDir = "d:\\Temp"; // 轮询间隔 5 秒 long interval = TimeUnit.SECONDS.toMillis(5); // FileAlterationObserver observer = new FileAlterationObserver( rootDir, FileFilterUtils.and( FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter(".java")), null); observer.addListener(new MyFileListener()); FileAlterationMonitor monitor = new FileAlterationMonitor(interval,observer); // 开始监控 monitor.start(); } }
package org.demo.file; import java.io.File; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; /** * 自定义文件监听器 * @author * @date 2010-11-16 * @file org.demo.file.MyFileListener.java */ public class MyFileListener extends FileAlterationListenerAdaptor{ @Override public void onFileCreate(File file) { System.out.println("[新建]:" + file.getAbsolutePath()); } @Override public void onFileChange(File file) { System.out.println("[修改]:" + file.getAbsolutePath()); } @Override public void onFileDelete(File file) { System.out.println("[删除]:" + file.getAbsolutePath()); } }
2 楼
plghqr
2010-11-12
org.apache.commons.io.monitor.FilesystemObserver in commons-io.jar
1 楼
xbgd
2010-09-03
写的很帅
可是我发现,ccopy一个很大的文件到目标文件去时,首先提示增加文件,然后我copy完毕后提示更新文件.
所以在判断增加文件 或者 更新文件时,都需要检查熬文件是否被占用中.....
代码我拿去重用下 \(^o^)/~
可是我发现,ccopy一个很大的文件到目标文件去时,首先提示增加文件,然后我copy完毕后提示更新文件.
所以在判断增加文件 或者 更新文件时,都需要检查熬文件是否被占用中.....
代码我拿去重用下 \(^o^)/~
发表评论
-
ubuntu 里安装 db2
2011-04-11 16:17 5246# 下载 http://www-01.ibm.com ... -
几个小算法题
2011-04-03 13:40 1113/** * 数字三角 * 当 n == 7 时输 ... -
获取 SkyDrive 的文件外链固定地址
2011-04-03 11:47 1435javascript: var id = window.se ... -
常用知识记录
2011-04-02 17:25 1605sql 部分 1. 查询已创建的数据库 // ... -
Java 与 C++ 在表达式运算上的一点异同
2010-12-25 00:24 12581. java public class Main{ ... -
SWFUpload+commons-fileupload 上传文件
2010-12-17 19:20 10960说明:使用SWFUpload 上传文件,可在客户端校验文件大小 ... -
在 ubuntu 下搭建 ftp 服务端 [ vsftpd ]
2010-11-16 20:11 1868vsftpd 1. 安装 ftp 服务端 ... -
Tomcat 常用操作
2010-11-16 13:47 2635tomcat 常用操作 1. 安装 tomcat 1.1 ... -
在 ubuntu 下搭建 svn 服务端
2010-11-13 20:43 2966参考: http://wiki.ubunt ... -
正则表达式常用功能代码
2010-11-02 19:37 12901. 校验 /** * 校验 email * @pa ... -
三种常见的排序方法[选择,冒泡,快速]
2010-10-17 17:51 1088public class Main{ public ... -
Filter 常用代码
2010-10-12 22:50 11941. 压缩 Filter // GZIPFilter.jav ... -
log4j 常用配置代码
2010-10-12 14:35 1365Reference library: commons-log ... -
计算组合数并输出
2010-09-14 09:35 5578问题描述:计算一组数据的组合数并输出 例如:输入1,2,3 ... -
native2ascii的 java实现
2010-09-13 13:49 3856描述:简单模拟JDK自带的 native2ascii.exe ... -
计算全排列
2010-09-13 09:04 1574问题描述:计算一组数 ... -
apache commons dbcp 学习与使用
2010-06-18 20:37 1574类结构 org |_demo |_d ... -
Java常用功能代码
2010-06-10 14:33 58691. 屏幕截图 public static ... -
一个关于组合数的问题
2010-05-03 20:09 11491. 题目来源 未解之谜俱 ... -
Java常用功能代码[ 2 ]
2010-04-27 17:35 13831. 加载所有 jar 包中同名的配置文件 /** * ...
相关推荐
实现被监控端硬盘文件的上传、下载;实现对鼠标、键盘的模拟;实现在远程机器上执行任意DOS命令;远程关机、远程重启计算机,方便了用户监视和操作被监控端机器。本系统从系统需求分析、概要设计、详细设计到具体的...
Java网吧网络监控管理系统的设计与实现.doc
基于Java的CS远程监控系统软件是一种用于监控和管理...通过以上设计与实现,基于Java的CS远程监控系统软件能够帮助管理员实现对大量计算机设备的实时监控和远程管理,提高管理效率和响应速度,保障系统安全和稳定运行。
系统文件夹: 获取系统特殊文件加的路径和图标。 系统快捷方式: 管理系统快捷方式。 系统相关信息: 收集系统CPU,内存,环境变量等相关信息。 系统会话: 提供关机,休眠,重启,注销等功能。 系统IO及网络功能: ...
实现被监控端硬盘文件的上传、下载;实现对鼠标、键盘的模拟;实现在远程机器上执行任意DOS命令;远程关机、远程重启计算机,方便了用户监视和操作被监控端机器。本系统从系统需求分析、概要设计、详细设计到具体的...
java 写的文件管理系统(带注释),具有如下功能(附上直接可运行的Myexplorer.jar 和 安装版本的封装MyExplorer_setup.exe文件) 2.3基本功能:(1)文件和目录的基本操作,比如文件和目录的创建、删除、复制、移动...
基于JAVA的CS远程监控系统软件可以实现对远程计算机的监控和控制,其主要功能包括: 远程监控:通过该软件,可以实时监控远程计算机的屏幕、键盘和鼠标操作等。 远程控制:通过该软件,可以对远程计算机进行远程...
屏幕抓取技术: 使用Java图像处理库实现将远程计算机屏幕内容传输到监控端。 数据加密: 对传输的数据进行加密处理,确保数据传输的安全性。 应用场景: 远程技术支持: 可用于远程支持员工解决电脑问题,无需现场...
基于Java的跨平台服务器文件安全监控软件设计与实现
Docker 是一个开源的应用容器引擎,和传统的虚拟机技术相比,Docker 容器性能开销极低,因此也广受开发者...这篇文章主要介绍了基于spring-boot和docker-java实现对docker容器的动态管理和监控 ,需要的朋友可以参考下
实现被监控端硬盘文件的上传、下载;实现对鼠标、键盘的模拟;实现在远程机器上执行任意DOS命令;远程关机、远程重启计算机,方便了用户监视和操作被监控端机器。本系统从系统需求分析、概要设计、详细设计到具体的...
校园视频监控系统的功能已基本实现,主要实现个人中心,用户管理,视频管理员管理,摄像头管理,校园监控管理,留言板管理,系统管理等功能的操作系统。 (1)用户功能 该部分内容提供首页,校园监控,公告信息,...
完成文件上传,excel文件解析,数据导出为excel,以及课程管理系统的基本功能。 二、主要功能 系统所面向的的主要目标用户是老师、学生以及后台管理员。 教师角色的主要权限包括对学生以及助教人员的管理、课程...
该系统主要用于办公室文档管理、人员管理、日程安排等功能,通过JAVA语言开发客户端软件,使用MySQL数据库进行数据存储,实现了文档管理、人员信息管理、日程安排、报表查询等功能。 文档管理模块实现了对办公文档的增...
基于JAVA CS远程监控系统软件的实现(源代码+论文).rar 基于Java ME无线网络移动端的俄罗斯方块游戏的实现(源代码+论文).rar 基于Java ME无线网络移动端的俄罗斯方块游戏的实现(论文,源代码).rar 基于Javamail的邮件...
《计算机毕业设计:Java实现的实习管理系统(SpringBoot框架,源码+说明+论文)》是一项全面而实用的资源,专为本科课程设计、毕业设计以及Java学习者量身打造。该系统基于Java语言,采用SpringBoot框架构建,确保了...
3. 实现远程文件传输和管理:用户可以通过该软件进行远程文件传输和管理,包括上传、下载、删除等操作。 4. 实现远程命令执行:用户可以通过该软件远程执行目标主机的命令,方便用户进行系统管理和维护。 该软件将...
文献综述 计算机科学与技术 基于 java 的远程监控系统的设计与实现 一、前言 近年来,随着计算机及网络的应用普及,千千万万的人们在娱乐、通讯、学习、工作等 各方面都实现了前所未有的信息化,极大地提高了生活...
远程监控软件一般分两个部分:一部分是客户端程序Client,另一部分是服务器端程序Server,由于本毕业设计的通信模块有别于传统的远程监控软件,...基于Java的后端远程系统软件的实现源码实现,适合计算机专业的毕业设计
《计算机毕业设计:Java实现的毕业设计流程管理系统》是一套集源码、数据库及文档于一体的全面资源包,专为本科生的课程设计、毕业设计以及Java学习而精心打造。这套资源不仅保证了系统的可靠运行,还附赠了计算机...