Android 监听文件夹

在一次Androidpc端的通讯过程中,我们放弃了adb forward来实现socket通讯。而是使用adb push文件,我监听文件夹... 都学习一下很有必要

本篇简单Android监听文件夹的方式FileObserver

FileObserver简介

Android.os包下的FileObserver类是一个用于监听文件访问、创建、修改、删除、移动等操作的监听器,基于LinuxINotify

FileObserver是个抽象类,必须继承它才能使用。每个FileObserver对象监听一个单独的文件或者文件夹,如果监视的是一个文件夹,那么文件夹下所有的文件和级联子目录的改变都会触发监听的事件。

FileObserver使用


package com.example.chenjy.chenjy;

import android.os.FileObserver;

import utils.LogUtil;

/**
 * Created by chenjy on 2017/5/2.
 */

public class FileListener extends FileObserver {

    private EventCallback callback;

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

    public void setEventCallback(EventCallback callback){
        this.callback = callback;
    }

    @Override
    public void onEvent(int event, String path) {
        LogUtil.i("FileListener", "path="+path);
        switch (event){
            // 文件被访问
            case FileObserver.ACCESS:
                LogUtil.i("FileListener", "ACCESS");
                break;
            // 文件被修改
            case FileObserver.MODIFY:
                LogUtil.i("FileListener", "MODIFY");
                break;
            // 文件属性被修改
            case FileObserver.ATTRIB:
                LogUtil.i("FileListener", "ATTRIB");
                break;
            // 可写文件被close
            case FileObserver.CLOSE_WRITE:
                LogUtil.i("FileListener", "CLOSE_WRITE");
                if(callback != null){
                    callback.onEvent(path);
                }
                break;
            // 不可写文件被close
            case FileObserver.CLOSE_NOWRITE:
                LogUtil.i("FileListener", "CLOSE_NOWRITE");
                break;
            // 文件被打开
            case FileObserver.OPEN:
                LogUtil.i("FileListener", "OPEN");
                break;
            // 文件被移走
            case FileObserver.MOVED_FROM:
                LogUtil.i("FileListener", "MOVED_FROM");
                break;
            // 文件被移进来
            case FileObserver.MOVED_TO:
                LogUtil.i("FileListener", "MOVED_TO");
                break;
            // 文件被删除
            case FileObserver.DELETE:
                LogUtil.i("FileListener", "DELETE");
                break;
            // 创建新文件
            case FileObserver.CREATE:
                LogUtil.i("FileListener", "CREATE");
                break;
            // 自删除
            case FileObserver.DELETE_SELF:
                LogUtil.i("FileListener", "DELETE_SELF");
                break;
            // 自移动
            case FileObserver.MOVE_SELF:
                LogUtil.i("FileListener", "MOVE_SELF");
                break;
        }
    }

    public interface EventCallback{
        void onEvent(String path);
    }
}

FileObserver调用


package com.example.chenjy.chenjy;

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

public class MainActivity extends Activity {

    public static final String FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Pictures";

    private FileListener fileListener = new FileListener(FILE_PATH);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        fileListener.startWatching();

    }

}

运行app

然后通过adb pushandroid 设备push图片。

原文地址:https://www.cnblogs.com/chenjy1225/p/9662151.html

时间: 2024-10-23 01:52:34

Android 监听文件夹的相关文章

使用Node.JS监听文件夹变化

使用Node.JS监听文件夹改变有许多应用场合,比如: 构建自动编绎工具 当源文件改变时,自动运行build过程,比如当你写CoffeeScript文件或SASS CSS文件时,保存之后可即时生成对应的JS或CSS. 构建自动布署工具 通过侦听源文件夹的改变,你可以自动即时将改后的文件布署到测试服务器,加快你的开发测试速度. 这些工具其实都需要侦听文件夹的改变,基于Node.JS的侦听文件夹改变的模块有很多. fs.watch 其中Node.JS的文件系统也可侦听某个目录的改变, 如fs.wat

kafka flumn sparkstreaming java实现监听文件夹内容保存到Phoenix中

ps:具体Kafka Flumn SparkStreaming的使用  参考前几篇博客 2.4.6.4.1 配置启动Kafka (1) 在slave机器上配置broker 1) 点击CDH上的kafka进入kafka功能界面,切换到实例页签,点击下方的“添加角色实例”进入添加角色实例界面. 2) 进入添加角色界面,点击Kafka Broker下面的选择主机 3) 进入选择主机界面,将主机全选,之后点击确定 (2) 启动Kafka (3) 创建主题,主题名为井名,有几个井创建几个对应的主题. 进入

如何使用NodeJs来监听文件变化

1.前言 在我们调试修改代码的时候,每修改一次代码,哪怕只是很小的修改,我们都需要手动重新build文件,然后再运行代码,看修改的效果,这样的效率特别低,对于开发者来说简直不能忍. 2.构建自动编译工具 如何使用nodeJs来监听文件变化,一旦源文件修改保存时,自动运行build过程.比如当你写CoffeeScript文件或SASS文件时,保存之后可即时生成对应的JS或CSS. 基于Node.JS的侦听文件夹改变的模块有很多. a .  fs.watch.Node.JS的文件系统也可侦听某个目录

Android 监听 Android中监听系统网络连接打开或者关闭的实现代码

本篇文章对Android中监听系统网络连接打开或者关闭的实现用实例进行了介绍.需要的朋友参考下 很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.Intent;  import android.net.ConnectivityManager;  import android.ne

android 监听网络状态的变化及实战

android 监听网络状态的变化及实际应用 转载请注明博客地址:http://blog.csdn.net/gdutxiaoxu/article/details/53008266 平时我们在请求错误的情况下,通常会进行处理一下,一般来说,主要分为两方面的错误 - 没有网络的错误 - 在有网络的情况下,我们客户端的错误或者服务器端的错误 今天这篇博客主要阐述以下问题 怎样监听网络状态的变化,包括是否打开WiFi,否打开数据网络,当前连接的网络是否可用 网络没有打开情况下的处理,如弹出对话框,跳转到

Android 监听ListView、GridView滑动到底部

// 监听listview滚到最底部mIndexList.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { // 当不滚动时 case OnScrollListener.SCROLL_STATE_IDLE: // 判断滚动到底部 if (view.get

win7 安装oracle 10g 未生成监听文件 导致配置监听时无法保存

最近这两天一直在为安装 的oracle 配置监听无法保存 再找各种解决方案,最后自己居然自己配置出来了. 因为缺少监听文件,拷贝别人的放到自己的目录下C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN   listener.ora.tnsnames.ora和 sqlnet.ora 1.修改 tnsnames.ora  中的 # tnsnames.ora Network Configuration File:  c:\oracle\product\10.

Android监听ScrollView滑动到顶端和底部

MainActivity如下: package cn.testscrollview; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ScrollView; import android.app.Activity; /** * Demo描述: * 监

android下创建文件夹和修改其权限的方法

原文:http://www.cnblogs.com/wanqieddy/archive/2011/12/28/2304906.html 由于工作的需要,今天研究了在android下创建文件夹和修改其权限的方法,需要了解的是每个应用程序包都会有一个私有的存储数据的目录(类似文件夹),只有属于该包的应用程序才能写入该目录空间,每个包应用程序的私有数据目录位 于Android绝对路径/data/data/<包名>/目录中.除了私有数据目录应用程序还拥有/sdcard目录(即SD Card的写入权限,