android5.0 手机中,缓存文件不能实时刷新问题,解决办法.

来源:互联网 发布:itools 3 mac 破解版 编辑:程序博客网 时间:2024/05/21 10:35
public class MtpUtils {    private static final String ACTION_MEDIA_SCANNER_SCAN_DIR = "android.intent.action.MEDIA_SCANNER_SCAN_DIR";    private static final Logger logger = LoggerFactory.getLogger(MtpUtils.class);    /**     * Intent.ACTION_MEDIA_SCANNER_SCAN_FILE:扫描指定文件     *     * @param context  Context     * @param filePath 文件路径     */    public static void scanFileAsync(Context context, String filePath) {        Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);        scanIntent.setData(Uri.fromFile(new File(filePath)));        context.sendBroadcast(scanIntent);    }    /**     * 刷新MTP,刷新指定文件夹路径下的所有文件(只是根目录下的文件)     *     * @param context Context     * @param dir     文件夹路径     */    public static void scanMtpAsync(Context context, String dir) {        File[] files = new File(dir).listFiles(new FileFilter() {            @Override            public boolean accept(File pathname) {                return pathname.isFile();            }        });        logger.error("MtpUtils:指定路径下文件:{}",                     files+"");        String[] paths = new String[files.length];        for (int co = 0; co < files.length; co++) {            paths[co] = files[co].getAbsolutePath();            logger.error("MtpUtils:{}", paths[co]+"");            scanFileAsync(context, paths[co]);        }    }    /**     * 刷新MTP,刷新整个sdcard目录下,消耗资源     *     * @param context Context     */    public static void scanMtpAsync(Context context) {        String dir = "/sdcard/";        File[] files = new File(dir).listFiles();        logger.error("MtpUtils:指定路径下文件:{}", files+"");        String[] paths = new String[files.length];        for (int co = 0; co < files.length; co++) {            paths[co] = files[co].getAbsolutePath();            logger.error("MtpUtils:{}", paths[co]);            if (new File(paths[co]).isDirectory()) {                scanMtpAsync(context, paths[co]);                logger.error("MtpUtils:是文件夹:{}", paths[co]+"");            } else {                logger.error("MtpUtils:是文件:{}", paths[co]+"");                scanFileAsync(context, paths[co]);            }        }

}

}

用法:

在需要导出文件的时候,在导出的完成后的逻辑后面加上:

MtpUtils.scanMtpAsync(this, "/sdcard/导出/");//刷新指定目录下的所有文件.

这个时候插上usb线,连接电脑,就不用再在改目录下面新建一个文件夹来采用强制刷新的方式来刷新出来文件了!

阅读全文
0 0
原创粉丝点击