主线程接受键盘输入,子线程每1秒钟一次,判断指定的某个目录 下的某个文件是否被修改,如果被修改,就在Console上打印出 “File changed…”

package com.softeem.len5;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Scanner;

//主线程接受键盘输入,子线程每1秒钟一次,判断指定的某个目录
//下的某个文件是否被修改,如果被修改,就在Console上打印出
//“File changed…”
public class ThreadUpdateFileDemo extends Thread{
    public long time;//记录文件最后修改的时间
    public File file;
    public ThreadUpdateFileDemo(){
        file=new File("c:/文件夹/a.txt");//初始化file对象
        time=file.lastModified();//初始化最后修改的时间
    }
    
    //线程体方法
    public void run(){
        while(true){
        try {
            Thread.sleep(1000);//暂停一秒 
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  //上一次最后被修改的时间  != 当前文件最后修改的时间
        if (time!=file.lastModified()) {//判断文件被修改
            System.out.println("文件被修改!");
            //再将最后修改的时间赋值给time
            time=file.lastModified();
        }
        }
    }
    
    public static void main(String[] args) throws IOException {
        ThreadUpdateFileDemo tuf=new ThreadUpdateFileDemo();
        tuf.start();//开启线程
        
        //接收键盘输入的内容
        InputStream in=System.in;
        //创建缓存空间
        byte [] buff=new byte[1024];
        int len=0;
        
        //将in对象的内容读取到buff中
        while ((len=in.read(buff))!=-1) {//这里的read有阻塞的作用
            FileOutputStream out=new FileOutputStream("c:/文件夹/a.txt",true);
            out.write(buff, 0, len);
            out.close();
        }
    }
}

 

posted @ 2014-12-15 20:30  屌丝一枚#  阅读(244)  评论(0)    收藏  举报