• Android App更新时Log显示如下错误信息


    Logger写*.log文件时 Console Log:

    W/System.err: java.io.IOException: open failed: ENOENT (No such file or directory)
    W/System.err:     at java.io.File.createNewFile(File.java:939)
    W/System.err:     at com.mmednet.library.log.Logger$1.runInBackground(Logger.java:191)
    W/System.err:     at com.mmednet.library.log.Logger$1.runInBackground(Logger.java:174)
    W/System.err:     at com.mmednet.library.log.RunTask.run(RunTask.java:76)
    W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
    W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
    W/System.err:     at java.lang.Thread.run(Thread.java:818)
    W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
    W/System.err:     at libcore.io.Posix.open(Native Method)
    W/System.err:     at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
    W/System.err:     at java.io.File.createNewFile(File.java:932)
    W/System.err: ... 6 more
    

    出现原因:
    清除缓存功能将文件目录清除掉,但是Logger工具类仍然往目录中写文件,就出现了 ENOENT (No such file or directory) 的异常,所以在删除缓存时,只删除缓存文件,不破坏目录结构:

    /**
     * 只删除文件,不删除文件夹
     */
    private static boolean deleteDir(File dir) {
        if (dir == null) {
            return false;
        }
        if (dir.isDirectory()) {
            String[] children = dir.list();
            int len = children.length;
            if (len == 0) {
                return true;
            }
            for (int i = 0; i < len; i++) {
                //无论File是目录还是文件,file.isDirectory() 、file.isFile() 都会返回false
                File file = new File(children[i]);
                Logger.e("new File(a) 类型: " + file.getName() + " " + file.isDirectory() + "  " + file.isFile());
                File child = new File(dir, children[i]);
                Logger.e("new File(a, b) 类型: " + file.getName() + " " + child.isDirectory() + "  " + child.isFile());
                boolean success;
                if (child.isDirectory()) {
                    if (child.list().length == 0) {
                        return true;
                    }
                    success = deleteDir(child);
                } else {
                    success = child.delete();
                }
                if (!success) {
                    return false;
                }
                Logger.w(TAG, "dir: " + dir.getName() + " child : " + child.getName() + " success : " + success);
                if (i == len - 1) {
                    return true;
                }
            }
        }
        return dir.isDirectory();
    }
    

    目录结构为:

    cache

    crash -> empty

    info -> *.log files

    1-》2,删除info下所有的文件;3 crash(empty).length==0,return true,标识cache文件夹清理完成

  • 相关阅读:
    如何优化多个关键字
    如何优化中小型企业网站
    SEO内容为王之如何创造伪原创
    中央电化教育馆教学资源库介绍
    教育网络游戏《学乐吧》介绍
    教育技术学专业主干课程系列教材(共八本)
    百度,google对网站首页内页权重分配的区别
    网站内链对网站排名有那些作用和影响?
    网站好排名,页面内链少不了
    公务员考试与事业单位考试
  • 原文地址:https://www.cnblogs.com/jooy/p/13821234.html
Copyright © 2020-2023  润新知