服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - JAVA教程 - Java判断时间段内文件是否更新的方法

Java判断时间段内文件是否更新的方法

2019-12-07 15:50shichen2014 JAVA教程

这篇文章主要介绍了Java判断时间段内文件是否更新的方法,通过实例形式讲述了定时器、类加载器及线程等方法实现判断文件更新的功能,具有一定的参考借鉴价值,需要的朋友可以参考下

本文实例讲述了Java判断时间段文件是否更新的方法。分享给大家供大家参考。具体实现方法如下:

1.定时器

复制代码代码如下:
private Timer timer;  
  
/** 
* 简易定时器 
* @param delay  多久后开始执行。毫秒 
* @param period 执行的间隔时间。毫秒 
*/  
public void test(long delay, long period) {  
        timer = new Timer();  
        timer.schedule(new TimerTask() {  
            public void run() {  
                //你 的 操作方法  
                System.out.println(System.currentTimeMillis());  
            }  
        }, delay, period);  
}

 

2.深化版 

复制代码代码如下:

package classloader;  
/** 
 * @author vma 
 */  
// 自定义一个类加载器  
public class DynamicClassLoader extends ClassLoader {  
    public Class<?> findClass(byte[] b) throws ClassNotFoundException {  
        return defineClass(null, b, 0, b.length);  
    } 

 

package classloader;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.IOException;  
/** 
 * @author vma 
 */  
public class ManageClassLoader {  
    DynamicClassLoader dc =null; 

    Long lastModified = 0l;  
    Class c = null;  
    //加载类, 如果类文件修改过加载,如果没有修改,返回当前的  
    public Class loadClass(String name) throws ClassNotFoundException, IOException{  
     if (isClassModified(name)){  
        dc =  new DynamicClassLoader();  
      return c = dc.findClass(getBytes(name));  
     }  
     return c;  
    }  
    //判断是否被修改过  
    private boolean isClassModified(String filename) {  
        boolean returnValue = false;  
        File file = new File(filename);  
        if (file.lastModified() > lastModified) {  
            returnValue = true;  
        }  
        return returnValue;  
    }  
       // 从本地读取文件  
       private byte[] getBytes(String filename) throws IOException {  
        File file = new File(filename);  
        long len = file.length();  
        lastModified = file.lastModified();  
        byte raw[] = new byte[(int) len];  
        FileInputStream fin = new FileInputStream(file);  
        int r = fin.read(raw);  
        if (r != len) {
            throw new IOException("Can't read all, " + r + " != " + len);
        }
        fin.close();
        return raw;
    }
}

 

3.thread方法

复制代码代码如下:
class Thread1 extends Thread{
  public void run(){
//调用业务方法(查看文件是否改变)
Thread.currentThread().sleep("100000");
}

 

希望本文所述对大家的Java程序设计有所帮助。

延伸 · 阅读

精彩推荐