Android檔案或資料夾內容改變監聽器(FileObserver)
一. 概述:
android.os包下的FileObserver類是一個用於監聽檔案訪問、建立、修改、刪除、移動等操作的監聽器,基於linux的INotify。
FileObserver是個抽象類,必須繼承它才能使用。每個FileObserver物件監聽一個單獨的檔案或者資料夾,如果監視的是一個
資料夾,那麼資料夾下所有的檔案和級聯子目錄的改變都會觸發監聽的事件。
二. 監聽的事件型別:
(1)ACCESS,即檔案被訪問。
(2)MODIFY,檔案被修改。
(3)ATTRIB,檔案屬性被修改,如 chmod、chown、touch 等。
(4)CLOSE_WRITE,可寫檔案被 close。
(5)CLOSE_NOWRITE,不可寫檔案被 close。
(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;
- }
- }
- }
(2)給目錄設定監聽器:
- SDCardListener listener = new SDCardListener("目錄");
- //開始監聽
- listener.startWatching();
- /*
- * 在這裡做一些操作,比如建立目錄什麼的
- */
- //停止監聽
- listener.stopWatching();
四. 注意事項:
FileObserver物件必須保持一個引用,確保不被垃圾收集器回收掉,否則就不會觸發事件,這裡可以考慮使用Service服務。
相關文章
- JavaScript監聽文字節點內容改變JavaScript
- 設定Flume監聽檔案內容
- WPF 實現檔案/資料夾監聽工具
- 11.2資料庫監聽的改變資料庫
- linux 監控檔案內容變化Linux
- Linux下檔案內容更新了,資料夾時間戳卻沒變?Linux時間戳
- Swift_監聽UITextField內容的變化SwiftUI
- linux監控資料夾內的檔案數量Linux
- 用vb操作檔案或資料夾
- Python批量修改資料夾內所有json檔案中部分內容PythonJSON
- 刪除指定資料夾的檔案內容的sh指令碼指令碼
- Git 合併指定檔案或資料夾Git
- Python求取資料夾內的檔案數量、子資料夾內的檔案數量Python
- bootstrap3.x內less資料夾的檔案內容及功能分析boot
- 實時監聽div,input內容改變並獲取值(包括指令碼動態新增)指令碼
- JavaScript監聽屬性改變JavaScript
- [grep] grep -R -l 遞迴過濾資料夾中檔案內容遞迴
- python中按照資料夾中檔案的排列順序讀取檔案內容Python
- node.js監聽檔案變化Node.js
- jquery監聽文字框內容變化程式碼例項jQuery
- 改變資料檔案的路徑
- WINDOWS資料夾內容簡介Windows
- linux批量替換指定資料夾中所有檔案的指定內容Linux
- JavaScript 監聽子節點改變JavaScript
- Java中實現複製檔案或資料夾Java
- Linux rm 命令刪除檔案或資料夾Linux
- 實時監聽文字框內容變化程式碼例項
- vba之小功能記錄--根據內容,另存檔案到指定資料夾
- Python監測監聽螢幕介面內容變化併傳送通知Python
- 精讀《如何利用 Nodejs 監聽資料夾》NodeJS
- JavaScript監聽後代節點改變JavaScript
- linux刪除資料夾下所有檔案命令是什麼 linux刪除資料夾下內所有內容怎麼操作Linux
- java檔案相關(檔案追加內容、檔案內容清空、檔案內容讀取)Java
- VBA判斷指定的資料夾或檔案是否存在
- git刪除遠端資料夾或檔案的方法Git
- uniapp獲取通知欄內容 監聽通知欄內容APP
- Android建立資料夾及檔案並寫入資料Android
- 將檔案轉移到一個資料夾內batBAT