android 文件監聽器

一. 概述:linux

 

     Android.os包下的FileObserver類是一個用於監聽文件訪問、建立、修改、刪除、移動等操做的監聽器,基於Linux的INotify。android

 

     FileObserver是個抽象類,必須繼承它才能使用。每一個FileObserver對象監聽一個單獨的文件或者文件夾,若是監視的是一個ide

 

     文件夾,那麼文件夾下全部的文件和級聯子目錄的改變都會觸發監聽的事件。.net

 

二. 監聽的事件類型:server

 

     (1)ACCESS,即文件被訪問。對象

 

     (2)MODIFY,文件被修改。繼承

 

     (3)ATTRIB,文件屬性被修改,如 chmod、chown、touch 等。事件

 

     (4)CLOSE_WRITE,可寫文件被 close。get

 

     (5)CLOSE_NOWRITE,不可寫文件被 close。it

 

     (6)OPEN,文件被 open。

 

     (7)MOVED_FROM,文件被移走,如 mv。

 

     (8)MOVED_TO,文件被移來,如 mv、cp。

 

     (9)CREATE,建立新文件。

 

     (10)DELETE,文件被刪除,如 rm。

 

     (11)DELETE_SELF,自刪除,即一個可執行文件在執行時刪除本身。

 

     (12)MOVE_SELF,自移動,即一個可執行文件在執行時移動本身。

 

     (13)CLOSE,文件被關閉,等同於(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)。

 

     (14)ALL_EVENTS,包括上面的全部事件。

 

               注:上面的全部靜態變量都是FileObserver靜態屬性。

 

三. 例:

 

    (1)建立目錄監聽器:

import android.os.FileObserver;   
import android.util.Log;   
  
/**  
 * SD卡中的目錄建立監聽器。  
 * 
 * @author mayingcai  */   public class SDCardListener extends FileObserver {             public SDCardListener(String path) {                /*                  * 這種構造方法是默認監聽全部事件的,若是使用 super(String,int)這種構造方法,                  * 則int參數是要監聽的事件類型.                  */                 super(path);           }               @Override          public void onEvent(int event, String path) {                         switch(event) {                         case FileObserver.ALL_EVENTS:                                Log.d("all", "path:"+ path);                                break;                         case FileObserver.CREATE:                                Log.d("Create", "path:"+ path);                                break;                  }          }    }

相關文章
相關標籤/搜索