少年击剑更吹箫,剑气箫心一例消。这篇文章主要讲述Android 监听文件夹相关的知识,希望能为你提供帮助。
在一次android
和pc
端的通讯过程中,我们放弃了adb forward
来实现socket
通讯。而是使用adb push
文件,我监听文件夹... 都学习一下很有必要
【Android 监听文件夹】本篇简单Android
监听文件夹的方式FileObserver
。
FileObserver简介Android.os
包下的FileObserver
类是一个用于监听文件访问、创建、修改、删除、移动等操作的监听器,基于Linux
的INotify
。
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 push
向android
设备push
图片。文章图片
文章图片
文章图片
推荐阅读
- Android so文件
- Android BitmapFactory.Options 解决大图片加载OOM问题
- Android 更新UI
- 考拉Android统一弹框
- Android SharedPreferences
- Spring源码解析 – AnnotationConfigApplicationContext容器创建过程
- Android-自定义仿QQ列表Item滑动
- 迈向高阶(优秀Android程序员必知必会的网络基础)
- Android PDA扫描枪广播接搜条码并使用