用法 先定义一个 全局变量
private SaveToSdCardUtil saveToSdCardUtil;
初始化工具类
在oncreate 中
saveToSdCardUtil = new SaveToSdCardUtil(context);
先得到 图片的资源 或者 通过url 下载图片得到Bitmap 图片
一参 为 要保存的图片的名字
二参 为 保存的图片资源 没有 填0
三参 为 要保存的 Bitmap 图片 没有填 null
一参 必须 指定 , 二 , 三 参数 根据需求 自行设置
saveToSdCardUtil.saveImageFile(“xxx.jpg”, 0, bmp);
下面是工具类 直接 粘贴 至 工程中 即可 使用
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Environment;
import android.util.Log;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Created by 保存图片工具类on 2016/7/29.
*/
public class SaveToSdCardUtil {
private Context context;
//要存的文件绝对路径
String filePath;
//要存的文件绝对路径
private String fileCashPath;
public SaveToSdCardUtil(Context contexts) {
this.context = contexts;
}
//保存图片文件
public void saveImageFile(String fileName, int imageRes, Bitmap bitmap) {
saveToCash(fileName, imageRes, bitmap);
//要存的文件
File saveFile;
try {
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
&& Environment.getExternalStorageDirectory().exists()) {
filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + fileName;// /storage/sdcard0
saveFile = new File(filePath);
} else {
filePath = context.getFilesDir().getAbsolutePath() + File.separator + fileName;
saveFile = new File(filePath);
String cmd = "chmod 777 " + saveFile.getAbsolutePath();
try {
Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
e.printStackTrace();
}
}
//如果存在这个文件则先删除
if (saveFile.exists()) {
saveFile.delete();
}
// TODO 1
saveFile.createNewFile();
Bitmap pic = null;
if (bitmap != null) {
pic = bitmap;
} else {
pic = BitmapFactory.decodeResource(context.getResources(),
imageRes);
}
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(saveFile)));
FileOutputStream fos = new FileOutputStream(saveFile);
pic.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
// java.io.IOException: open failed: EACCES (Permission denied)
} catch (Throwable t) {
t.printStackTrace();
}
}
private void saveToCash(String fileName, int imageRes, Bitmap bitmap) {
//要存的文件
File saveCashFile;
fileCashPath = context.getCacheDir().getAbsolutePath() + File.separator + fileName;
//创建文件
saveCashFile = new File(fileCashPath);
//如果存在这个文件则先删除
if (saveCashFile.exists()) {
saveCashFile.delete();
}
try {
saveCashFile.createNewFile();
Bitmap pic = null;
if (bitmap != null) {
pic = bitmap;
} else {
pic = BitmapFactory.decodeResource(context.getResources(),
imageRes);
}
FileOutputStream fos = new FileOutputStream(saveCashFile);
pic.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public String getFilePath() {
if (filePath != null && !filePath.equals("")) {
File testFile = new File(filePath);
if (!testFile.exists()) {
return fileCashPath;
} else {
Log.i("tag", "-filePath--" + filePath);
return filePath;
}
} else {
return fileCashPath;
}
}
//保存文件
public String getSaveFilePath(String fileName) {
//要存的文件
File saveFile = null;
try {
if (Environment.MEDIA_MOUNTED.equals(Environment
.getExternalStorageState())
&& Environment.getExternalStorageDirectory().exists()) {
filePath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + File.separator + fileName;
//创建文件
saveFile = new File(filePath);
} else {
filePath = context.getFilesDir().getAbsolutePath() + File.separator
+ fileName;
//创建文件
saveFile = new File(filePath);
String cmd = "chmod 777 " + saveFile.getAbsolutePath();
try {
Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
e.printStackTrace();
}
}
//如果存在这个文件则先删除
if (saveFile.exists()) {
saveFile.delete();
}
saveFile.createNewFile();
} catch (Throwable t) {
t.printStackTrace();
}
if (saveFile.getAbsolutePath().toString() != null && !saveFile.getAbsolutePath().toString().equals("")) {
return saveFile.getAbsolutePath().toString();
} else {
return "/sdcard/" + fileName;
}
}
}