`

使用FileObserver对sdcard文件或文件夹监控

阅读更多
http://orgcent.com/android-sdcard-fileobserver/

Android系统API提供了FileObserver抽象类(Linux的INotify机制)来监听系统/sdcard中的文件或文件夹,FileObserver类能对sdcard中的文件及文件夹的打开、创建、移动和删除操作进行监控。下面看看代码实现:

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.FileObserver;

public class AndroidFileListenerActivity extends Activity {
    private FileObserver mFileObserver;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        if(null == mFileObserver) {
            mFileObserver = new SDCardFileObserver(Environment.getExternalStorageDirectory().getPath());
            mFileObserver.startWatching(); //开始监听
        }
    }

    public void onDestory() {
        if(null != mFileObserver) mFileObserver.stopWatching(); //停止监听
    }
    
    static class SDCardFileObserver extends FileObserver {
        //mask:指定要监听的事件类型,默认为FileObserver.ALL_EVENTS
        public SDCardFileObserver(String path, int mask) {
            super(path, mask);
        }

        public SDCardFileObserver(String path) {
            super(path);
        }

        @Override
        public void onEvent(int event, String path) {
            final int action = event & FileObserver.ALL_EVENTS;
            switch (action) {
            case FileObserver.ACCESS:
                System.out.println("event: 文件或目录被访问, path: " + path);
                break;
                
            case FileObserver.DELETE:
                System.out.println("event: 文件或目录被删除, path: " + path);
                break;
                
            case FileObserver.OPEN:
                System.out.println("event: 文件或目录被打开, path: " + path);
                break;
                
            case FileObserver.MODIFY:
                System.out.println("event: 文件或目录被修改, path: " + path);
                break;
            }
        }
        
    }
}


注意事项:
1、防止FileObserver类的对象被垃圾回收,否则将不能收到文件及文件夹的监听事件了。
2、程序运行在Android模拟器中,使用Eclipse的DDMS中的File视图来对Android模拟器的sdcard中的文件及文件夹进行操作
分享到:
评论
1 楼 weisi2375 2012-11-22  
学习了 ~~~~~~~~~~~~~~~~~~~~~~~

相关推荐

    在SDCard上创建文件夹

    创建了文件夹之后,你可以使用`File`类的方法来创建、读取、写入或删除文件。例如,要在刚刚创建的文件夹中创建一个新文件: ```java File newFile = new File(appFolder, "example.txt"); if (!newFile.exists())...

    FileObserver的使用方式,监测camera文件夹,android4.1

    下面将详细介绍`FileObserver`的使用方式以及与相机文件夹监控相关的知识。 首先,`FileObserver`的实例化需要提供一个路径和一个观察事件的位掩码。路径可以是文件或者目录,而位掩码定义了你关心的事件类型,如`...

    小米手机SDcard中的文件和文件夹分析

    本excel中记录了miui 系统中 软件或者系统在sd卡中建立的缓存文件或文件夹的名称 以及所对应的程序 并附建议性删除选项

    使用FileObserver监听SD卡下文件变动的小栗子~

    在Android开发中,有时我们需要实时监控SD卡上文件的变化,比如文件的创建、删除、重命名或内容修改等。这通常可以通过使用`FileObserver`类来实现。`FileObserver`是Android提供的一种轻量级机制,用于监视指定目录...

    Android-SD卡文件夹创建和删除实现

    总结来说,创建和删除Android SD卡上的文件夹涉及对文件系统的操作,包括`File`对象的使用以及相应的文件操作方法。而利用ListView和BaseAdapter,可以方便地在界面上展示这些文件夹,并进行交互操作。在开发过程中...

    文件浏览 打开sdcard文件夹。只显示文件夹和txt文件。过滤非txt文件。选择txt文件返回其名字。

    3. **文件过滤**:为了只显示文件夹和TXT文件,可以使用`java.io.File`类的`listFiles()`方法,传入一个`FileFilter`对象。这个过滤器应该检查每个文件的扩展名是否为".txt"。例如: ```java File dir = ...

    在SDcard里新建一个文件和文件夹并修改权限apk源码

    本教程将聚焦于在SDcard(外部存储)上创建新文件和文件夹以及调整其权限的源码实现。SDcard是Android设备用于存储用户数据和应用程序扩展内容的主要空间。 首先,我们要明确Android对文件操作的限制。由于安全考虑...

    安卓模拟器sdcard.img文件打开修改

    在Android开发或者测试过程中,有时候我们需要对安卓模拟器的存储空间进行操作,比如添加应用程序、媒体文件等。这时,就需要了解如何打开并修改安卓模拟器的`sdcard.img`文件。`sdcard.img`文件是Android模拟器中...

    android 写入SDcard 文件

    在Android平台上,对SDCard(外部存储)进行文件操作是应用程序与用户交互的重要部分,尤其对于需要存储大量数据或媒体文件的应用来说。本教程将详细解释如何在Android中读写SDCard文件,非常适合初学者入门。 首先...

    获取sdCard文件大小

    主要方法:1.获取文件指定文件的指定单位的大小;2.调用此方法自动计算指定文件或指定文件夹的大小;3.获取指定文件大小;4.获取指定文件夹;5.转换文件大小;6.转换文件大小,指定转换的类型

    从SDCard中读取文本内容

    step 3:检测sdcard中mana文件夹下是否有test.txt文件,如果有则读取文件内容,如果没有则从assets中把test.txt文件拷贝到sdcard的mana文件夹下,然后读取sdcard中的test.txt文件内容。 step 4:把文件内容显示到...

    检测当前系统中是否存在sdcard,并在sdcard中创建一个文件

    本文将深入探讨如何检测Android系统是否支持SDcard,并在SDcard上创建并写入文件,主要涉及的技术点包括Android的存储权限、SDcard的检测、FileOutputStream的使用。 首先,我们需要了解Android对外部存储的访问...

    android外部存储文件操作,实现对sdcard上的文件进行操作

    7. **监听文件变化**:如果需要实时监控文件或目录的变化,可以使用`FileObserver`类。 ```java FileObserver observer = new FileObserver(dir.getAbsolutePath(), FileObserver.ALL_EVENTS) { @Override ...

    Android获取SDcard目录及创建文件夹的方法

    今天,我们将为大家分享一篇关于 Android 获取 SDcard 目录及创建文件夹的方法,这篇文章具有很好的参考价值,希望对大家有所帮助。 首先,让我们来看一下如何获取 SDcard 目录。获取 SDcard 目录的方法是通过 ...

    sdcard文件读写案例-ES文件浏览器

    以下是关于"sdcard文件读写案例-ES文件浏览器"的相关知识点: 1. **SD卡访问权限**:在Android 6.0(API级别23)及以上版本,应用需要动态获取读写SD卡的权限。用户在首次运行应用时会被询问是否授予`READ_EXTERNAL...

    预置一些文件到系统sdcard目录.txt

    预置一些文件到系统sdcard目录

    android调试sdcard文件加载,解决不能传入文件问题

    android调试sdcard文件加载,解决不能传入文件问题: 只需要执行4个命令,win和mac下都好使。

    sdcard文件浏览器

    在Android设备上,SD卡通常使用FAT32或exFAT文件系统,而这款应用需要能够理解和处理这些文件系统的特性。 2. **目录结构**:应用允许用户浏览目录层级,这涉及到递归遍历文件夹结构,展示每个文件和子文件夹。用户...

    Android应用源码SdCard读写文件实例

    在Android平台上,对SD卡(外部存储)进行读写文件是常见的操作,尤其对于需要存储大量数据或资源的应用来说更是必不可少。本实例将探讨如何在Android应用中实现SdCard的读取和写入功能,这涉及到Android的权限管理...

    android读取sdcard路径下的文件的方法

    代码如下:// 读取sdcard文件private void sdcardRead(){String fileName = “/sdcard/my_sdcard.txt”;// assets下文件//String fileName = “/sdcard/test/my_sdcard_test.txt”;// sdcard下子目录文件String ret =...

Global site tag (gtag.js) - Google Analytics