社区
Java SE
帖子详情
监控文件目录的变化
zyxsgq
2003-07-08 09:56:21
现在在做一个监控目录变化的程序,如何判断一个目录中拷贝进新文件,及如何判断目录下删除文件,我这个程序是定时查看目录的(例如相隔1分钟)
...全文
1351
3
打赏
收藏
监控文件目录的变化
现在在做一个监控目录变化的程序,如何判断一个目录中拷贝进新文件,及如何判断目录下删除文件,我这个程序是定时查看目录的(例如相隔1分钟)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lion_boy
2003-07-09
打赏
举报
回复
import java.lang.*;
import java.util.*;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.naming.*;
import javax.naming.directory.*;
import java.io.*;
import java.awt.*;
import java.net.*;
import javax.swing.*;
public class DirWatcher implements Runnable{
private MainFrame mf;
private String dir;
private Vector newList;
private Vector oldList;
private Vector tempList;
private int timeInt;
public DirWatcher(MainFrame mf){
this.mf = mf;
newList = new Vector();
oldList = new Vector();
tempList = new Vector();
}
public void run(){
boolean isError = false;
getDirName();
getTimeInt();
mf.setTDirColor(new Color(0,0,255));
mf.DirWatcherOutput("Watch directory [" + dir + "] start.")
firstScan();
while(!isError){
scanDir();
readOldList();
if(compare()){
writeNewList();
}
oldList.removeAllElements();
newList.removeAllElements();
try{
Thread.sleep(timeInt * 1000);
}
catch(InterruptedException e){
String dMessage = "Directory scanning thread was interrupted." +
"\nDirectory Watcher stopped.";
int dType = JOptionPane.ERROR_MESSAGE;
String dTitle = "Scanning error:";
JOptionPane.showMessageDialog(null,dMessage,dTitle,dType);
isError = true;
}
}
}
void getDirName(){
File file = new File(System.getProperty("user.dir") + "\\","gftp.cfg");
if(file.exists()){
try{
FileInputStream fin = new FileInputStream(file);
BufferedReader freader = new BufferedReader(new InputStreamReader(fin));
freader.readLine();
freader.readLine();
String path = freader.readLine();
dir = path.substring(7);
}
catch(IOException e){
dir = "C:\\gridshare\\";
}
}
else{
dir = "C:\\gridshare\\";
}
}
void getTimeInt(){
File file = new File(System.getProperty("user.dir") + "\\","dirw.cfg");
if(file.exists()){
try{
FileInputStream fin = new FileInputStream(file);
BufferedReader freader = new BufferedReader(new InputStreamReader(fin));
String temp = freader.readLine();
String timeint = temp.substring(11);
timeInt = Integer.parseInt(timeint);
}
catch(IOException e){
timeInt = 30;
}
}
else{
timeInt = 30;
}
}
void totalScan(String dir,String ndir,Vector vlist,boolean flag){
File specDir = new File(dir);
String[] plist = specDir.list();
for(int i = 0; i < plist.length; i++){
String pname = dir + "\\" + plist[i];
String npname = ndir + "/" + plist[i];
File file = new File(pname);
if(file.isDirectory()){
totalScan(pname,npname,vlist,flag);
}
else{
vlist.addElement(npname);
if(flag){
mf.DirWatcherOutput("Performing entry addtion for file: " + npname + "......");
addToLdap newAdd = new addToLdap(npname);
String s = newAdd.add();
if(s.equals("none")){
mf.DirWatcherOutput("File entry for: " + npname + " added.");
}
else{
mf.DirWatcherOutput(s);
}
}
}
}
}
void firstScan(){
totalScan(dir,"",tempList,true);
}
void scanDir(){
totalScan(dir,"",newList,false);
}
void readOldList(){
for(int i = 0; i < tempList.size(); i++){
oldList.addElement(tempList.elementAt(i));
}
}
void writeNewList(){
tempList.removeAllElements();
for(int i = 0; i < newList.size(); i++){
tempList.addElement(newList.elementAt(i));
}
}
boolean compare(){
boolean flag = false;
for(int i = 0; i < newList.size(); i++){
if(oldList.indexOf(newList.elementAt(i)) == -1){
postAddition(newList.elementAt(i));
flag = true;
}
}
for(int i= 0; i < oldList.size(); i++){
if(newList.indexOf(oldList.elementAt(i)) == -1){
postDeletion(oldList.elementAt(i));
flag = true;
}
}
return flag;
}
void postAddition(Object str){
mf.DirWatcherOutput("Performing entry addtion for file: " + str.toString() + "......");
addToLdap newAdd = new addToLdap(str.toString());
String s = newAdd.add();
if(s.equals("none")){
mf.DirWatcherOutput("File entry for: " + str.toString() + " added.");
}
else{
mf.DirWatcherOutput(s);
}
}
void postDeletion(Object str){
mf.DirWatcherOutput("Performing entry deletion for file: " + str.toString() + "......");
deleteFromLdap newDelete = new deleteFromLdap(str.toString());
String s = newDelete.delete();
if(s.equals("none")){
mf.DirWatcherOutput("File entry for: " + str.toString() + " deleted.");
}
else{
mf.DirWatcherOutput(s);
}
}
}
newman0708
2003-07-08
打赏
举报
回复
用两vector保存文件目录结构(就是所有文件)
一个vector是现在的目录,另一个是1分钟前的目录。
两进行比较,就就可以知道变化的情况了。
挺感兴趣的,做好了能给我一份。
newman0708@yahoo.com.cn
unsalted
2003-07-08
打赏
举报
回复
隔1分钟列一下目录下的文件,看看有没有缺少或者新增。
Java SE
62,629
社区成员
307,262
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章