Android FileObserver 用法

本文介绍了如何使用Android的FileObserver来监控文件系统变化,当检测到新文件时进行拷贝操作。在处理过程中遇到的文件创建导致的事件嵌套问题,通过改变文件创建路径和理解FileObserver.stopWatching的工作原理得以解决。同时,为了应对断电情况,启动时会检查并清理监测目录。此外,还涉及到Android系统的文件权限设置。
摘要由CSDN通过智能技术生成

项目中有个需要,需要根据接收后台推送的文件,然后拷贝到指定目录。这个功能用FileObserver 可以实现,当监测目录有新文件时,会触发FileObserver.onEvent(),在onEvent 里拷贝文件就可以了。

 private void startFileObserverThread(){
   
    Runnable structexce = new Runnable() {
   
        public void run() {
   
            int flags = FileObserver.CREATE|FileObserver.MOVED_TO;//1.在监测路径中新建文件、子文件夹或将文件、子文件夹移动到监测路径
            
            mObserver = new FileObserver(SRC_PATH, flags) {
   
                public void onEvent(int event, String path) {
   //2.监测事件发生,触发onEvent
                    targetFile = null;
                    File[] files = new File(SRC_PATH).listFiles();
                    if(files==null){
   
                        return;
                    }
                    
                    try {
   
                        Thread.sleep(10000);//3.加个延时,等后台把文件传完
                    } catch (InterruptedException e) {
   
                        e.printStackTrace();
                    }
                    
                    for(int i=0; i<files.length; i++){
   
                        File f = files[i];
                        if(f.getName().matches("\\S*\\.zip$") && f.isFile()){
   
                            Log.d(TAG, "find target file: " +f.getPath());
                            targetFile = f;
                            break;                                
                        }
                    }
                    if ( targetFile != null) {
   

                        for(int j=0; j<10; j++){
   //4.以防万一,最多拷贝10次

                            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值