我的应用程序现在有一个后台服务,需要检查用户选择的某些特定目录是否有任何更改。如果有任何新文件,它将被上传到服务器(如同步到您的Dropbox文件夹),但如果用户从他的设备删除文件,服务器上的文件将不会被删除。我的问题是我找不到有效的方法来检测变化。
我首先使用递归来检查文件夹大小,但显然性能并不好(服务必须在xxx分钟/秒后递归检查文件夹,记录其大小以便与下次比较...)。
我尝试使用DownloadManager.ACTION_DOWNLOAD_COMPLETE,这也不是一个好的选择。首先,可以复制新文件,而不仅仅是下载。其次,广播接收者只能接收从我的应用发送的请求,而不是从其他应用或浏览器发送的请求。我查看Google和StackOverFlow,但只能找到如何扫描媒体文件,我需要更多。有什么建议吗?
先谢谢。
答案 0 :(得分:1)
有FileObserver用于此目的 http://developer.android.com/reference/android/os/FileObserver.html?
答案 1 :(得分:0)
您的问题很难阅读,顺便说一下,如果您要查找的文件夹大小更改使用此功能,
此功能将返回特定文件夹中的大小。
public static long folderSize(File directory) {
long length = 0;
for (File file : directory.listFiles()) {
if (file.isFile())
length += file.length();
else
length += folderSize(file);
}
return length;
}