El uso y breve principio de Android FileObserver

FileObserver es una clase de Android que monitorea un archivo o directorio específico en busca de cambios. Puede ayudar a los desarrolladores a detectar la creación , eliminación , cambio de nombre , modificación y otras operaciones de archivos o directorios en tiempo real. Al utilizar FileObserver, los desarrolladores pueden responder a estos cambios en el sistema de archivos de manera oportuna y realizar operaciones específicas cuando ocurren los eventos correspondientes.


Uso de 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()
    }

}

Nota: Debe asegurarse de que la ruta del archivo monitoreado tenga permisos de lectura y escritura antes de que el programa pueda ejecutarse normalmente.


FileObserver interactúa con el código C/C++ a través de JNI (interfaz nativa de Java) en la capa inferior y llama a la interfaz inotify del sistema . Cuando se inicia la instancia de FileObserver, creará una instancia de inotify subyacente y solicitará al kernel que supervise el archivo o directorio especificado .

Cuando el archivo o directorio monitoreado cambia, el kernel generará un evento correspondiente y pasará la información del evento al FileObserver. FileObserver capturará estos eventos y activará los métodos de devolución de llamada correspondientes, como onEvent().


Cabe señalar que la implementación subyacente de FileObserver utiliza características específicas de Linux, por lo que solo se puede usar en Android , no en otros sistemas operativos o plataformas.

Supongo que te gusta

Origin blog.csdn.net/weixin_47592544/article/details/132627060
Recomendado
Clasificación