`
zsnlovewl
  • 浏览: 176544 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 监听文件和目录的创建删除移动等事件

阅读更多

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:

Java代码 复制代码
  1. import android.os.FileObserver;   
  2. import android.util.Log;   
  3.   
  4. /**  
  5.  * sd卡上的目录创建监听器  
  6.  * @author chroya  
  7.  *  
  8.  */  
  9. public class SDCardListener extends FileObserver {   
  10.   
  11.     public SDCardListener(String path) {   
  12.         /*  
  13.          * 这种构造方法是默认监听所有事件的,如果使用super(String,int)这种构造方法,  
  14.          * 则int参数是要监听的事件类型.  
  15.          */  
  16.         super(path);   
  17.     }   
  18.   
  19.     @Override  
  20.     public void onEvent(int event, String path) {          
  21.         switch(event) {   
  22.         case FileObserver.ALL_EVENTS:   
  23.             Log.d("all""path:"+ path);   
  24.             break;   
  25.         case FileObserver.CREATE:   
  26.             Log.d("Create""path:"+ path);   
  27.             break;   
  28.         }   
  29.     }   
  30. }  
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就是触发事件的目录。

      然后使用它:

Java代码 复制代码
  1. SDCardListener listener = new SDCardListener("/sdcard");   
  2. //开始监听   
  3. listener.startWatching();   
  4. /*  
  5. * 在这里做一些操作,比如创建目录什么的  
  6. */  
  7. //最后停止监听   
  8. listener.stopWatching();  
SDCardListener listener = new SDCardListener("/sdcard");
//开始监听
listener.startWatching();
/*
* 在这里做一些操作,比如创建目录什么的
*/
//最后停止监听
listener.stopWatching();

 

      如果要在onEvent中做较多操作,最好用线程去做 ,以免因为阻塞接收不到后面的事件。

      最后补充一点,比较重要
      FileObserver对象必须保持一个引用,确保不被垃圾收集器回收掉,否则就不会触发事件了。

 

来源:http://chroya.iteye.com/blog/761076

分享到:
评论

相关推荐

    Android 拍照、截图事件监听实现源码

    `FileObserver`是一个用于监视文件或目录变化的类,它可以监控创建、删除、修改、移动等事件。 ```java public class MediaObserver extends FileObserver { public MediaObserver(String path, int mask) { ...

    android 监听SD卡文件变化的实现代码

    Android系统为此提供了一个名为`FileObserver`的类,它基于Linux的`INotify`机制,允许我们监听指定路径下的文件或文件夹的各种事件,如创建、删除、移动和打开等。 首先,我们来看如何创建一个`FileObserver`实例...

    android 文件浏览器

    1. Android文件系统:Android采用Linux内核,因此其文件系统与传统的Linux文件系统类似,包括根目录、挂载点、文件和目录等。 2. Android存储空间:Android设备通常有两种存储方式,内部存储(Internal Storage)和...

    Android文件资源管理项目

    文件管理器需要提供创建、删除、重命名文件和目录的功能。这些操作可以通过File类提供的mkdirs(), delete(), renameTo()等方法实现。同时,要注意处理可能出现的异常,如文件不存在、无权限等。 4. **UI设计与布局*...

    Android 文件管理器

    这个项目名为"FileManagerExample",它包含了创建、浏览、编辑、复制、移动、删除文件和目录等一系列常见的文件管理功能。 首先,Android的文件管理主要涉及到以下几个核心知识点: 1. **文件操作API**:Android...

    Android文件浏览器源码

    首先,我们要明白Android文件浏览器的基本功能:列出指定目录下的文件和子目录,支持用户选择、查看、复制、移动和删除文件。这个简单的文件浏览器实现了这些基础功能,对于初学者来说,这是一个很好的学习起点。 ...

    Android简单文件浏览器源代码

    - `java.io.File`:Java中的核心类,用于处理文件和目录,包括创建、删除、重命名、获取属性等操作。 - `ContentResolver`:Android特有的API,用于与内容提供者交互,访问文件系统或媒体库。 - `Intent`:用于...

    Android 小米文件管理器源码.rar

    4. 文件操作逻辑:包括创建、删除、移动、复制等文件操作。这些功能通常由`FileOperation`类或者相关服务实现,涉及到了Android的文件I/O操作和Intent机制。 5. 搜索功能:文件管理器的搜索功能涉及到全文搜索或者...

    Android 文件选择器(支持选择u盘).zip

    开发者可能创建了一个BroadcastReceiver或者使用startActivityForResult()来监听U盘插入和拔出事件。 3. **Permission管理**:由于Android 6.0及以上版本引入了运行时权限,开发者需要在运行时请求读写外部存储和...

    Android 文件管理器源码.zip

    - 实现文件的创建、删除、重命名、复制、移动等操作,涉及`File`类的各种方法。 - 对于大文件,可能需要使用异步任务(`AsyncTask`)避免阻塞UI线程。 6. **权限管理**: - Android 6.0及以上版本需要动态请求`...

    android文件管理器

    在Android平台上,文件管理器是用户与设备存储交互的重要工具,它允许用户浏览、操作、创建、删除和管理各种类型的文件。本篇文章将深入探讨如何使用Android UI组件ListView来实现一个基本的文件管理器,以及如何...

    一个Android WiFi 文件共享程序

    3. **文件I/O操作**:在Android中处理文件,包括读取、写入、创建和删除文件,是文件共享程序的基础。 4. **蓝牙和WiFi的区别**:虽然两者都能进行设备间通信,但WiFi Direct在速度和文件大小上有优势,适合大文件...

    Android录音 获取录音文件 录音时间

    在Android平台上进行录音操作是移动应用开发中常见的功能,它涉及到多媒体处理、文件操作以及用户交互等多个方面。本文将深入探讨如何在Android中实现录音、获取录音文件以及控制录音时间,同时也会提及与动画和文件...

    Android小米文件管理器源码

    开发者会接触到`File`类用于创建、读取、写入和删除文件,以及`InputStream`和`OutputStream`用于流式数据操作。 2. **SQLite数据库**:在管理文件时,可能会用到SQLite数据库来存储文件元数据,例如文件路径、大小...

    android 拖拽和删除的listview

    你可以查看此文件,了解如何布局每个条目,以及如何添加触摸事件监听和删除按钮。 总之,实现Android的拖拽和删除的ListView需要理解ListView的工作原理,自定义Adapter,处理触摸事件,以及掌握数据操作和动画技术...

    android 文件管理器

    1. 创建/删除/重命名:使用`File`类的方法实现对文件和目录的创建、删除和重命名操作。 2. 复制/移动:涉及`ParcelFileDescriptor`和`FileChannel`,用于在文件系统间传输数据。 3. 解压缩/压缩:可以集成第三方库如...

    android 侧拉删除仿ios侧拉删除

    我们需要监听这些事件,计算手指移动的距离,判断是否触发侧拉删除。 2. **视图动画**:为了实现侧拉效果,可以使用`ObjectAnimator`或者自定义`ViewPropertyAnimator`来平滑地改变视图的位置。同时,需要考虑到...

    Android列表拖拽,左右滑动删除

    在拖放监听器中,你需要处理拖放开始、移动和结束等事件,以更新数据源并刷新列表。删除监听器则用于在用户滑动删除项目时执行实际的删除操作。 为了支持左右滑动删除,你需要实现一个自定义的Adapter,重写`...

    android SD卡文件浏览器

    在Android平台上,SD卡文件浏览器是一款实用的应用程序,它允许用户查看和管理存储在设备SD卡上的文件和文件夹。这个应用通常具有直观的界面,采用列表视图展示SD卡内容,便于用户浏览、选择、复制、移动或删除文件...

Global site tag (gtag.js) - Google Analytics