FileObserver は、指定されたファイルまたはディレクトリの変更を監視する Android クラスです。これは、開発者がファイルやディレクトリの作成、削除、名前変更、変更、およびその他の操作をリアルタイムで検出するのに役立ちます。FileObserver を使用すると、開発者はこれらのファイル システムの変更にタイムリーに対応し、対応するイベントが発生したときに特定の操作を実行できます。
FileObserver の使用:
class MainActivity : AppCompatActivity() {
var fileObserver: FileObserver? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val path = "/sdcard/xxxx/xxxx" // 监视的文件或目录路径
fileObserver = object : FileObserver(path) {
override fun onEvent(event: Int, path: String?) {
when (event) {
CREATE -> {} // 文件或目录创建
DELETE -> {} // 文件或目录删除
DELETE_SELF -> {} // 自身删除
MODIFY -> {} // 文件或目录修改
MOVED_FROM -> {} // 移动或重命名
MOVED_TO -> {} // 移动或重命名后
ATTRIB -> {} // 文件或目录属性变化
}
}
}
fileObserver?.startWatching()
}
override fun onDestroy() {
super.onDestroy()
fileObserver?.stopWatching()
}
}
注:プログラムを正常に実行するには、監視対象のファイル パスに読み取りおよび書き込み権限があることを確認する必要があります。
FileObserver は、最下層の JNI (Java Native Interface) を介して C/C++ コードと対話し、システムの inotifyインターフェイスを呼び出します。FileObserver インスタンスが開始すると、基礎となる inotify インスタンスが作成され、指定されたファイルまたはディレクトリを監視するようカーネルに要求されます。
監視対象のファイルまたはディレクトリが変更されると、カーネルは対応するイベントを生成し、イベント情報を FileObserver に渡します。FileObserver はこれらのイベントをキャプチャし、onEvent() などの対応するコールバック メソッドをトリガーします。
FileObserver の基礎となる実装は Linux 固有の機能を使用するため、Androidでのみ使用でき、他のオペレーティング システムやプラットフォームには適用できないことに注意してください。