- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
根据文档,
"Each FileObserver instance monitors a single file or directory. If a directory is monitored,
events will be triggered for all files and subdirectories inside the monitored directory."
我的代码是这样的,
FileObserver fobsv = new FileObserver("/mnt/sdcard/") {
@Override
public void onEvent(int event, String path) {
System.out.println(event+" "+path);
}
};
fobsv.startWatching();
但是,onEvent()
仅在 /mnt/sdcard/ 中的文件发生更改时触发。如果我在 /mnt/sdcard/downloads/ 中创建文件,则不会触发该方法。
代码有问题吗?
最佳答案
有一个开源的 RecursiveFileObserver
可以像普通的 FileObserver
一样工作......我目前正在使用它,它就是它的名字,它作为一个 FileObserver,它对您选择的目录下的所有目录都是递归的...
这是它:
public class RecursiveFileObserver extends FileObserver {
public static int CHANGES_ONLY = CLOSE_WRITE | MOVE_SELF | MOVED_FROM;
List<SingleFileObserver> mObservers;
String mPath;
int mMask;
public RecursiveFileObserver(String path) {
this(path, ALL_EVENTS);
}
public RecursiveFileObserver(String path, int mask) {
super(path, mask);
mPath = path;
mMask = mask;
}
@Override
public void startWatching() {
if (mObservers != null) return;
mObservers = new ArrayList<SingleFileObserver>();
Stack<String> stack = new Stack<String>();
stack.push(mPath);
while (!stack.empty()) {
String parent = stack.pop();
mObservers.add(new SingleFileObserver(parent, mMask));
File path = new File(parent);
File[] files = path.listFiles();
if (files == null) continue;
for (int i = 0; i < files.length; ++i) {
if (files[i].isDirectory() && !files[i].getName().equals(".")
&& !files[i].getName().equals("..")) {
stack.push(files[i].getPath());
}
}
}
for (int i = 0; i < mObservers.size(); i++)
mObservers.get(i).startWatching();
}
@Override
public void stopWatching() {
if (mObservers == null) return;
for (int i = 0; i < mObservers.size(); ++i)
mObservers.get(i).stopWatching();
mObservers.clear();
mObservers = null;
}
@Override
public void onEvent(int event, String path) {
}
private class SingleFileObserver extends FileObserver {
private String mPath;
public SingleFileObserver(String path, int mask) {
super(path, mask);
mPath = path;
}
@Override
public void onEvent(int event, String path) {
String newPath = mPath + "/" + path;
RecursiveFileObserver.this.onEvent(event, newPath);
}
}
}
在您的应用中创建一个新类并将此代码复制到其中,然后随意使用它!如果您觉得这有帮助,请投票!
关于Android:FileObserver 只监控顶级目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16448002/
我正在使用 FileObserver 来查看 android 中的文件夹。当用户在这个文件夹中修改或创建一个新文件时,FileObserver 应该对这个文件做一些事情。 问题是通过使用子句 File
我有一个目录,用户可以将文件从另一台设备传输到该目录。我有一个 FileObserver 监视那个目录。但我不知道要注意什么。我需要知道文件何时完成传输,以便将其移动到另一个位置。那么我要注意什么事件
我遇到了以下问题: 在我的 Activity 中,我有一个列出外部文件目录内容的 ListView 。我希望列表在内容发生任何变化时立即更新,所以我有: public class FileAdapte
我在 Activity 的 onCreate 函数中声明了 1 个 fileObserver。这是第一次,每当您对文件目录进行任何更改(具体而言,我删除了文件夹)时,观察者都会工作并广播一个 Inte
我正在一个家庭更换应用程序的主要 Activity 中实现一个文件观察器。它会耗尽电池电量吗? 谢谢 最佳答案 FileObserver 不应耗尽电池电量。 FileObserver 监听 iNoti
我需要监控文件夹中的所有文件,当文件打开时(FileObserver.OPEN)我想执行一个方法。问题是有时,FileObserver 实例被 GC 收集,我试过这个: final MyFil
这是我的代码: public class SyncNotifyService extends Service { private final static String TAG = "File
好的,这很简单:我有一个 FileObserver 类来观察带有音乐的文件夹。所以我实现了 onEvent 和所有这些东西,但是当我使用文件管理器将文件移动或粘贴到该文件夹时,我得到的不是 Fil
根据文档, "Each FileObserver instance monitors a single file or directory. If a directory is monitored,
我怀疑我已经知道这个问题的答案了,但我还是想请教专家。 是否可以使用 FileObserver 类来监视对属于其他应用程序的文件的更改(即/data 目录中不属于实现 FileObserver 的应用
在 Android FileObserver 中,当在观察文件夹中创建目录或在该文件夹中删除目录时,我会收到一些奇怪的事件编号,例如 (1073742080, 1073742336)。 对于文件夹的创
在我的 Android 应用程序中,我想检测目录中的事件。这是代码: String path = Environment.getExternalStorageDirectory()
我很想知道是否有比 FileObserver 更好的方法来监视目录的文件更改/创建/删除。 FileObserver 需要持续引用它,这需要持续运行的服务,这很困难,也是一种不好的做法,对吧? 对于如
我想在服务中使用 FileObserver 观察是否在 /storage/emulated/0/DCIM/Camera 中添加了任何文件/文件夹,但它不起作用。如果我的代码有什么问题请告诉我🙏。这是
我需要在一个目录上设置一个 FileObserver。观察期链接到一个长时间运行的 Activity ,长时间运行是因为它有一个包含很多页面的 ViewPager。我没有将 FileObserver
我正在使用 FileObserver观察目录的变化。该过程在 90% 的时间里运行良好,但偶尔会失败。 这是一个 logcat 的工作示例: 04-23 21:12:03.873: V/ItemObs
在我的应用程序中,我有不同的组件,它们使用 FileObservers 监视 sdcard 中的特定文件。所以有两个 File Observer 实例观察一个文件,比如 abc.xml 的所有事件。
我想监控android系统文件的变化 "/sys/class/net/eth0/operstate" 用于监控以太网状态。 我写了一个 File Observer 类,但我没有收到任何事件public
我正在编写一个使用 android 中的 fileobserver 的应用程序。当我以任何方式修改文件(创建等)时,它应该上传。为了实现一个队列并防止使用线程等耗尽内存,我想使用 IntentServ
我现在正在编写 FileObserver 代码。我有以下代码,如果运行它,我将收到 NullPointerException。 public class FileModificationService
我是一名优秀的程序员,十分优秀!