JAVA创建文件监听
import java.io.*; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) throws IOException { File f = new File("C:\\Users\\Administrator\\Desktop\\s.txt"); File f1 = new File("C:\\Users\\Administrator\\Desktop\\change.txt"); FileInputStream fi = new FileInputStream(f); FileOutputStream fd = new FileOutputStream(f1); //创建管道流 PipedInputStream pi = new PipedInputStream(); PipedOutputStream po = new PipedOutputStream(); //连接管道 pi.connect(po); //将文件大小存入管道 try { po.write((int) f.length()); } catch (IOException e) { e.printStackTrace(); } byte[] b=new byte[1024]; //创建一个可定时调度的线程池 ScheduledExecutorService sc = Executors.newScheduledThreadPool(6); //创建定时调度任务 ScheduledFuture<?> scheduledFuture = sc.scheduleAtFixedRate(new Runnable() { @Override public void run(){ int size= 0; FileInputStream fi = null; try { fi = new FileInputStream(f); } catch (FileNotFoundException e) { e.printStackTrace(); } //从管道读取数据 try { size = pi.read(); } catch (IOException e) { e.printStackTrace(); } //判断监听文件是否存在 if(f.exists()){ //比较文件大小是否改变,文件改变,将改变数据写入到change文件 if(size!=f.length()){ System.out.println("change"); try { fi.skip(size); byte[] b=new byte[(int)(f.length()-size)]; fi.read(b); fd.write(b); fd.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } try { po.write((int) f.length()); } catch (IOException e) { e.printStackTrace(); } } } }, 0, 1, TimeUnit.SECONDS); } }
JAVA创建文件监听
最新推荐文章于 2023-09-01 15:51:33 发布