读书人

使用缓存有关问题

发布时间: 2012-07-15 20:20:06 作者: rapoo

使用缓存问题

public class CacheManager {    private static final long MAX_SIZE = 5242880L; // 5MB    private CacheManager() {    }    public static void cacheData(Context context, byte[] data, String name) throws IOException {        File cacheDir = context.getCacheDir();        long size = getDirSize(cacheDir);        long newSize = data.length + size;        if (newSize > MAX_SIZE) {            cleanDir(cacheDir, newSize - MAX_SIZE);        }        File file = new File(cacheDir, name);        FileOutputStream os = new FileOutputStream(file);        try {            os.write(data);        }        finally {            os.flush();            os.close();        }    }    public static byte[] retrieveData(Context context, String name) throws IOException {        File cacheDir = context.getCacheDir();        File file = new File(cacheDir, name);        if (!file.exists()) {            // Data doesn't exist            return null;        }        byte[] data = new byte[(int) file.length()];        FileInputStream is = new FileInputStream(file);        try {            is.read(data);        }        finally {            is.close();        }        return data;    }    private static void cleanDir(File dir, long bytes) {        long bytesDeleted = 0;        File[] files = dir.listFiles();        for (File file : files) {            bytesDeleted += file.length();            file.delete();            if (bytesDeleted >= bytes) {                break;            }        }    }    private static long getDirSize(File dir) {        long size = 0;        File[] files = dir.listFiles();        for (File file : files) {            if (file.isFile()) {                size += file.length();            }        }        return size;    }}
?

读书人网 >移动开发

热点推荐