package com.atguigu.baselibrary;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* 作者:尚硅谷-杨光福 on 2017/2/10 10:23
* 微信:yangguangfu520
* QQ号:541433511
* 作用:本地缓存工具类
*/
public class LocalCacheUtils {
private final MemoryCacheUtils memoryCacheUtils;
public LocalCacheUtils(MemoryCacheUtils memoryCacheUtils) {
this.memoryCacheUtils = memoryCacheUtils;
}
//http://n.sinaimg.cn/news/transform/20170209/oyyB-fyamvns4161987.jpg-->lklllklklllllk
public void putBitmap(String url, Bitmap bitmap) {
try {
//lklkkslkskkskskksk
String fileName = MD5Encoder.encode(url);
String dir = Environment.getExternalStorageDirectory() + "/beijingnews/image/";
//mnt/sdcard/beijintnews/image/lklkkslkskkskskksk
File file = new File(dir, fileName);
//mnt/sdcard/beijintnews/image/
File parent = file.getParentFile();
if (!parent.exists()) {
parent.mkdirs();//创建多级目录
}
//创建
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream stream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
stream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 根据Url获取图片
*
* @param url
* @return
*/
public Bitmap getBitmapFromUrl(String url) {
try {
//lklkkslkskkskskksk
String fileName = MD5Encoder.encode(url);
String dir = Environment.getExternalStorageDirectory() + "/beijingnews/image/";
//mnt/sdcard/beijintnews/image/lklkkslkskkskskksk
File file = new File(dir, fileName);
//如果该文件存在
if (file.exists()) {
FileInputStream inputStream = new FileInputStream(file);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
//当本地获取图片的时候,并且保持到内存中
if(bitmap != null){
memoryCacheUtils.putBitmap(url,bitmap);
}
return bitmap;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}