工程的结构:如下图
文件PropertiesListener.java
package cn.ts;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
public class PropertiesListener {
private final Timer timer=new Timer();//自动监听时钟
private final int sec=1000;//时间间隔周期
private final int sec_start=1000;//启动服务后多久开始进行监听
private final String path="d://123//";
public void contextInitialized(ServletContextEvent event){
String status="文件夹定时监听启动";
event.getServletContext().log(status);
timer.schedule(new PropertiesTask(path),sec_start,sec);
}
public void contextDestroyed(ServletContextEvent event){
String status="文件夹定时监听停止";
event.getServletContext().log(status);
timer.cancel();//停止自动
}
}
文件 PropertiesTask.java
package cn.ts;
import java.io.File;
import java.util.TimerTask;
public class PropertiesTask extends TimerTask{
private String path;
private File files;
private String[]list1;
private long lastModifiled;
//构造一个自动更新服务
public PropertiesTask(String path){
this.path =path;
this.lastModifiled=System.currentTimeMillis();
this.files=new File(path);
if(files.isDirectory()){
this.list1=files.list();
}
}
@Override
public void run() {
// TODO Auto-generated method stub
todo();
}
/**
* 监听文件夹的文件是否被 更新
*/
private void todo(){
if(files.isDirectory()){
String []list2=files.list();
int i;
if(list1.length<list2.length){
for( i=0;i<list2.length;i++);
File file=new File(path+list2[i]);
while(isFileUpdated(file)){
System.out.println(list2[i]+"文件被更新");
break;
}
}
list1=files.list();
}else{
System.out.println("********所监听的文件路径-"+path+"********");
}
}
/**
* 判断物理文件是否已更新
*/
private boolean isFileUpdated(File file){
if(file.isFile()){
long lastUpdateTime=file.lastModified();
if(lastUpdateTime>this.lastModifiled){
this.lastModifiled=lastUpdateTime;
return true;
}else{
return false;
}
}else{
return false;
}
}
}
在web.xml中的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<listener>
<listener-class>cn.ts.PropertiesListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
在D盘中的文件夹
启动了tomcat我在文件夹中进行操作可是一点反应都 没有,各位大侠帮忙一下。是不是我那写错了。请给与点拨。不胜感激。
5 个解决方案
#1
if(list1.length<list2.length){
这句话
如果文件没删除,不会成立的
这句话
如果文件没删除,不会成立的
#2
应该判断:
if(长度不等)
//直接返回有修改
else
// 每个文件比较
#3
亲,要比名称,md5值什么的
#4
肯定是
名称
名称
#5
我改了但是没反应啊
#1
if(list1.length<list2.length){
这句话
如果文件没删除,不会成立的
这句话
如果文件没删除,不会成立的
#2
应该判断:
if(长度不等)
//直接返回有修改
else
// 每个文件比较
#3
亲,要比名称,md5值什么的
#4
肯定是
名称
名称
#5
我改了但是没反应啊