社区
Java SE
帖子详情
监控文件目录的变化
zyxsgq
2003-07-08 09:56:21
现在在做一个监控目录变化的程序,如何判断一个目录中拷贝进新文件,及如何判断目录下删除文件,我这个程序是定时查看目录的(例如相隔1分钟)
...全文
1317
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分钟列一下目录下的文件,看看有没有缺少或者新增。
Prometheus+Grafana企业级
监控
实战(数据库
监控
篇)
本课程是承接《Prometheus+Grafana企业级
监控
实战(运维篇)》 来进行讲解 运维篇课程可以点击主页进行查看,本课程主要讲解
监控
数据库的实战内容。 本课
监控
的数据库有 Mysql,ElasticSearch,Redis,Kafka,Mongodb...
python
监控
文件
目录
变化
使用os.listdir()
监控
文件
目录
:#!/usr/bin/envpython #-*-coding=utf-8-*- #filename:monitor_dir.py importos importtime monitor_dir="/opt/" now_file=dict([(f,None)forfinos.listdir(monitor_...
Python实现
监控
目录
和
文件
变化
Python实现
监控
目录
和
文件
变化
随着互联网的快速发展,程序员们...Python 有多个模块可以帮助我们
监控
文件
和
目录
的
变化
,其中最流行的是 watchdog 模块。下面将展示如何使用 watchdog 模块来
监控
指定
目录
中的
文件
变化
。
java监听
目录
或者
文件
的
变化
比如 配置
文件
变化
后,需要重新加载配置。 二、Java监听
目录
变化
的实现方式 参考: https://zq99299.github.io/java-tutorial/essential/io/notification.html#watch-%E6%9C%8D%E5%8A%A1%E6%A6%82%E8%BF%B0 三、注意...
Android
监控
目录
文件
变化
公司要求做一个
监控
系统某一个
目录
下
文件
变化
,新增或者删除
文件
变化
的功能,查阅了一些资料,现在做一个总结 android.os包下的FileObserver类是Android提供的一个用于监听
文件
访问、创建、修改、删除、移动等操作...
Java SE
62,615
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章