java文件监控_JAVA轻量级文件监控

1 packageshuai.study.file.monitor;2

3 importjava.io.File;4 importjava.io.IOException;5

6 importorg.apache.commons.io.FileUtils;7 importorg.apache.commons.io.FilenameUtils;8 importorg.apache.commons.io.filefilter.FileFilterUtils;9 importorg.apache.commons.io.monitor.FileAlterationListenerAdaptor;10 importorg.apache.commons.io.monitor.FileAlterationMonitor;11 importorg.apache.commons.io.monitor.FileAlterationObserver;12 importorg.apache.log4j.Logger;13

14 importshuai.study.file.tooler.CommonTooler;15

16 /**

17 *@authorshengshu18 *19 */

20 public class FileMonitor extendsFileAlterationListenerAdaptor {21 private static final Logger LOG = Logger.getLogger(FileMonitor.class);22

23 private staticFileMonitor fileMonitor;24

25 private static int pageNumber = 0;26

27 privateFileMonitor() {28

29 }30

31 //Get singleton object instance

32 public staticFileMonitor getFileMonitor() {33 if (fileMonitor == null) {34 synchronized (FileMonitor.class) {35 if (fileMonitor == null) {36 fileMonitor = newFileMonitor();37 }38 }39 }40

41 returnfileMonitor;42 }43

44 //Create file event

45 @Override46 public voidonFileCreate(File file) {47 LOG.info("[Create]: " +file.getAbsolutePath());48

49 String fileAbsolutePath =file.getAbsolutePath();50 String fileAbsoluteParentPath =file.getParent();51 String fileBaseName =FilenameUtils.getBaseName(fileAbsolutePath);52

53 File destFile = new File(fileAbsoluteParentPath + File.separator + fileBaseName + "-" + CommonTooler.pagingFormat(pageNumber) + ".xml");54

55 try{56 FileUtils.moveFile(file, destFile);57 } catch(IOException ioe) {58 ioe.printStackTrace();59 }60

61 pageNumber++;62 }63

64 //Change file event

65 @Override66 public voidonFileChange(File file) {67 LOG.info("[Change]: " +file.getAbsolutePath());68 }69

70 //Delete file event

71 @Override72 public voidonFileDelete(File file) {73 LOG.info("[Delete]: " +file.getAbsolutePath());74 }75

76 public void monitor(String directory, intinterval) {77 //Observer file whose suffix is pm

78 FileAlterationObserver fileAlterationObserver = newFileAlterationObserver(directory, FileFilterUtils.and(FileFilterUtils.fileFileFilter(),79 FileFilterUtils.suffixFileFilter(".pm")), null);80

81 //Add listener for event (file create & change & delete)

82 fileAlterationObserver.addListener(this);83

84 //Monitor per interval

85 FileAlterationMonitor fileAlterationMonitor = newFileAlterationMonitor(interval, fileAlterationObserver);86

87 try{88 //Start to monitor

89 fileAlterationMonitor.start();90 } catch(Exception e) {91 e.printStackTrace();92 }93 }94 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值