1. 程式人生 > >Android 監控(檢查)SD卡指定目錄的變化

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;
            }
        }

    }