android.os下的FileObserver类是一个用于监听文件访问、创建、修改、删除、移动等操作的监听器,基于linux的inotify。
FileObserver
是个抽象类,必须继承它才能使用。每个FileObserver对象监听一个单独的文件或者文件夹,如果监视的是一个文件夹,那么文件夹下所有的文件和级联子目录的改变都会触发监听的事件。
所能监听的事件类型如下:
ACCESS,即文件被访问
MODIFY,文件被 修改
ATTRIB,文件属性被修改,如 chmod、chown、touch 等
CLOSE_WRITE,可写文件被 close
CLOSE_NOWRITE,不可写文件被 close
OPEN,文件被 open
MOVED_FROM,文件被移走,如 mv
MOVED_TO,文件被移来,如 mv、cp
CREATE,创建新文件
DELETE,文件被删除,如 rm
DELETE_SELF,自删除,即一个可执行文件在执行时删除自己
MOVE_SELF,自移动,即一个可执行文件在执行时移动自己
CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
ALL_EVENTS,包括上面的所有事件
这些都是FileObserver的静态共有属性。
下面举个例子说明一下其用法。
比如,我要监听sd卡的目录创建事件,新建一个类SDCardListener继承FileObserver:
import android.os.FileObserver;
import android.util.Log;
/**
* sd卡上的目录创建监听器
* @author chroya
*
*/
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;
}
}
}
onEvent是回调,系统监听到事件后会触发此事件,参数event就是上面所说的事件类型,根据类型,我们可以做相应的处理,参数path就是触发事件的目录。
然后使用它:
SDCardListener listener = new SDCardListener("/sdcard");
//开始监听
listener.startWatching();
/*
* 在这里做一些操作,比如创建目录什么的
*/
//最后停止监听
listener.stopWatching();
如果要在onEvent中做较多操作,最好用线程去做
,以免因为阻塞接收不到后面的事件。
最后补充一点,比较重要
:
FileObserver对象必须保持一个引用,确保不被垃圾收集器回收掉,否则就不会触发事件了。
分享到:
相关推荐
本项目聚焦于SD卡的文件管理,提供了丰富的功能,如文件创建、文件夹创建、文件删除、移动、复制等,同时也包括了全选功能,提高了操作效率。以下是对这些知识点的详细说明: 1. **文件创建**:在安卓设备上,用户...
1. Android文件系统:Android采用Linux内核,因此其文件系统与传统的Linux文件系统类似,包括根目录、挂载点、文件和目录等。 2. Android存储空间:Android设备通常有两种存储方式,内部存储(Internal Storage)和...
文件管理器需要提供创建、删除、重命名文件和目录的功能。这些操作可以通过File类提供的mkdirs(), delete(), renameTo()等方法实现。同时,要注意处理可能出现的异常,如文件不存在、无权限等。 4. **UI设计与布局*...
`FileObserver`是一个用于监视文件或目录变化的类,它可以监控创建、删除、修改、移动等事件。 ```java public class MediaObserver extends FileObserver { public MediaObserver(String path, int mask) { ...
这个项目名为"FileManagerExample",它包含了创建、浏览、编辑、复制、移动、删除文件和目录等一系列常见的文件管理功能。 首先,Android的文件管理主要涉及到以下几个核心知识点: 1. **文件操作API**:Android...
开发者可能创建了一个BroadcastReceiver或者使用startActivityForResult()来监听U盘插入和拔出事件。 3. **Permission管理**:由于Android 6.0及以上版本引入了运行时权限,开发者需要在运行时请求读写外部存储和...
- `java.io.File`:Java中的核心类,用于处理文件和目录,包括创建、删除、重命名、获取属性等操作。 - `ContentResolver`:Android特有的API,用于与内容提供者交互,访问文件系统或媒体库。 - `Intent`:用于...
首先,我们要明白Android文件浏览器的基本功能:列出指定目录下的文件和子目录,支持用户选择、查看、复制、移动和删除文件。这个简单的文件浏览器实现了这些基础功能,对于初学者来说,这是一个很好的学习起点。 ...
4. 文件操作逻辑:包括创建、删除、移动、复制等文件操作。这些功能通常由`FileOperation`类或者相关服务实现,涉及到了Android的文件I/O操作和Intent机制。 5. 搜索功能:文件管理器的搜索功能涉及到全文搜索或者...
- 实现文件的创建、删除、重命名、复制、移动等操作,涉及`File`类的各种方法。 - 对于大文件,可能需要使用异步任务(`AsyncTask`)避免阻塞UI线程。 6. **权限管理**: - Android 6.0及以上版本需要动态请求`...
在Android平台上,文件管理器是用户与设备存储交互的重要工具,它允许用户浏览、操作、创建、删除和管理各种类型的文件。本篇文章将深入探讨如何使用Android UI组件ListView来实现一个基本的文件管理器,以及如何...
8. **文件操作**:包括创建、删除、重命名、复制、移动、压缩和解压缩文件及目录,文件浏览器需提供这些功能的UI和实现。 9. **目录树视图**:文件浏览器通常显示目录层次结构,用户可以通过点击目录节点来展开或...
3. **文件I/O操作**:在Android中处理文件,包括读取、写入、创建和删除文件,是文件共享程序的基础。 4. **蓝牙和WiFi的区别**:虽然两者都能进行设备间通信,但WiFi Direct在速度和文件大小上有优势,适合大文件...
在Android平台上进行录音操作是移动应用开发中常见的功能,它涉及到多媒体处理、文件操作以及用户交互等多个方面。本文将深入探讨如何在Android中实现录音、获取录音文件以及控制录音时间,同时也会提及与动画和文件...
开发者会接触到`File`类用于创建、读取、写入和删除文件,以及`InputStream`和`OutputStream`用于流式数据操作。 2. **SQLite数据库**:在管理文件时,可能会用到SQLite数据库来存储文件元数据,例如文件路径、大小...
1. 创建/删除/重命名:使用`File`类的方法实现对文件和目录的创建、删除和重命名操作。 2. 复制/移动:涉及`ParcelFileDescriptor`和`FileChannel`,用于在文件系统间传输数据。 3. 解压缩/压缩:可以集成第三方库如...
你可以查看此文件,了解如何布局每个条目,以及如何添加触摸事件监听和删除按钮。 总之,实现Android的拖拽和删除的ListView需要理解ListView的工作原理,自定义Adapter,处理触摸事件,以及掌握数据操作和动画技术...
在Android平台上,SD卡文件浏览器是一款实用的应用程序,它允许用户查看和管理存储在设备SD卡上的文件和文件夹。这个应用通常具有直观的界面,采用列表视图展示SD卡内容,便于用户浏览、选择、复制、移动或删除文件...
我们需要监听这些事件,计算手指移动的距离,判断是否触发侧拉删除。 2. **视图动画**:为了实现侧拉效果,可以使用`ObjectAnimator`或者自定义`ViewPropertyAnimator`来平滑地改变视图的位置。同时,需要考虑到...