Android文件缓存的简单应用Acache

原ASimpleCache GitHub地址:https://github.com/yangfuhai/ASimpleCache

1、使用时需要注意:readLine会清除换行符,且在大量换行时影响效率

	 /**
     * 读取 String数据
     *
     * @param key
     * @return String 数据
     */
    public String getAsString(String key) {
        //中文可能会乱码
        File file = mCache.get(key);
        if (!file.exists())
            return null;
        boolean removeFile = false;
        BufferedInputStream bis = null;
        try {
            FileInputStream fis = null;
            fis = new FileInputStream(file);
            bis = new BufferedInputStream(fis);
            String content = "";
            //自己定义一个缓冲区
            byte[] buffer = new byte[1024 * 8];
            int flag = 0;
            while ((flag = bis.read(buffer)) != -1) {
                content += new String(buffer, 0, flag);
            }
            if (!Utils.isDue(content)) {
                return Utils.clearDateInfo(content);
            } else {
                removeFile = true;
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (removeFile) {
                remove(key);
            }

            try {

                if (bis != null) {
                    bis.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;

//        大量换行数据会很耗时,且换行符会丢失
//        File file = mCache.get(key);
//        if (!file.exists())
//            return null;
//        boolean removeFile = false;
//        BufferedReader in = null;
//        try {
//            in = new BufferedReader(new FileReader(file));
//            String readString = "";
//            String currentLine;
//            while ((currentLine = in.readLine()) != null) {
//                readString += currentLine;
//            }
//            if (!Utils.isDue(readString)) {
//                return Utils.clearDateInfo(readString);
//            } else {
//                removeFile = true;
//                return null;
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//            return null;
//        } finally {
//            if (in != null) {
//                try {
//                    in.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            }
//            if (removeFile)
//                remove(key);
//        }
    }

你可能感兴趣的:(Android)