Android 监控(检查)SD卡指定目录的变化

Android 开发有时候需要检测某个文件夹的变化,就可以使用 FileObserver这个类。

FileObserver这个类是系统自带的,可以直接使用。

 private FileObserver mFileObserver;


  String path = "";//这个路径就是需要 监控的路径,但是只能监控当前目录的变化,其下子目录内的变化是监控不到的!!


     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_backup);
       
         if (null == mFileObserver) {
            mFileObserver = new SDCardFileObserver(path);
            mFileObserver.startWatching(); //开始监听
        } 
    }
      
        
    
    class SDCardFileObserver extends FileObserver {
        String parentPath = "";


        //mask:指定要监听的事件类型,默认为FileObserver.ALL_EVENTS
        public SDCardFileObserver(String path, int mask) {
            super(path, mask);
        }


        public SDCardFileObserver(String path) {
            super(path);
            parentPath = path;
        }




        @Override
        public void onEvent(int event, String path) {
            final int action = event & FileObserver.ALL_EVENTS;
            switch (action) {
                case FileObserver.ACCESS:
                    MyLog.i(true, "MainActivity", "event: 文件或目录被访问, path: " + path);
                    break;

                case FileObserver.DELETE:
                    MyLog.i(true, "MainActivity", "event: 文件或目录被删除, path: " + path);
                    break;

                case FileObserver.OPEN:
                    MyLog.i(true, "MainActivity", "event: 文件或目录被打开, path: " + path);
                    break;

                case FileObserver.MODIFY:
                    MyLog.i(true, "MainActivity", "event: 文件或目录被修改, path: " + path);

                    break;


                case FileObserver.CREATE:
                    MyLog.i(true, "MainActivity", "event: 文件或目录被创建, path: " + path);
                    break;
            }
        }

    }

猜你喜欢

转载自blog.csdn.net/yuzhidao/article/details/76197917
今日推荐