Android 监听文件夹

少年击剑更吹箫,剑气箫心一例消。这篇文章主要讲述Android 监听文件夹相关的知识,希望能为你提供帮助。
在一次androidpc端的通讯过程中,我们放弃了adb forward来实现socket通讯。而是使用adb push文件,我监听文件夹... 都学习一下很有必要
【Android 监听文件夹】本篇简单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
Android 监听文件夹

文章图片

然后通过adb pushandroid 设备push图片。
Android 监听文件夹

文章图片

Android 监听文件夹

文章图片

Android 监听文件夹

文章图片


    推荐阅读