// 判断SD卡是否被挂载
public static boolean isSDCardMounted() {
// return Environment.getExternalStorageState().equals("mounted");
return Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);
}
// 获取SD卡的跟路径
public static String getSDCardBaseDir() {
if (isSDCardMounted()) {
return Environment.getExternalStorageDirectory().getAbsolutePath();
}
return "";
}
// 获取SD卡的完整空间大小,返回MB
public static long getSDCardSize() {
if (isSDCardMounted()) {
StatFs fs =new StatFs(getSDCardBaseDir());
int count = fs.getBlockCount();
int size = fs.getBlockSize();
return count * size /1024 /1024;
}
return 0;
}
// 获取SD卡的剩余空间大小,返回MB
public static long getSDCardFreeSize() {
if (isSDCardMounted()) {
StatFs fs =new StatFs(getSDCardBaseDir());
int count = fs.getFreeBlocks();
int size = fs.getBlockSize();
return count * size /1024 /1024;
}
return 0;
}
// 获取SD卡的可用空间大小,返回MB
public static long getSDCardAvailableSize() {
if (isSDCardMounted()) {
StatFs fs =new StatFs(getSDCardBaseDir());
int count = fs.getAvailableBlocks();
int size = fs.getBlockSize();
return count * size /1024 /1024;
}
return 0;
}
// 往SD卡的公有目录下保存文件
public static boolean saveFileToSDCardPublicDir(byte[] data, String type,
String fileName) {
BufferedOutputStream bos =null;
if (isSDCardMounted()) {
File file = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
// Log.i("SDCardHelper", "--->" + file.getAbsolutePath());
try {
bos =new BufferedOutputStream(new FileOutputStream(new File(
file, fileName)));
bos.write(data);
bos.flush();
return true;
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (bos !=null) {
bos.close();
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
return false;
}
// 往SD卡的私有Files目录下保存文件
public static boolean saveFileToSDCardPrivateFilesDir(byte[] data,
String type, String fileName, Context context) {
BufferedOutputStream bos =null;
if (isSDCardMounted()) {
File file = context.getExternalFilesDir(type);
try {
bos =new BufferedOutputStream(new FileOutputStream(new File(
file, fileName)));
bos.write(data);
bos.flush();
return true;
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (bos !=null) {
bos.close();
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
return false;
}
// 往SD卡的私有Cache目录下保存文件
public static boolean saveFileToSDCardPrivateCacheDir(byte[] data,
String fileName, Context context) {
BufferedOutputStream bos =null;
if (isSDCardMounted()) {
File file = context.getExternalCacheDir();
try {
bos =new BufferedOutputStream(new FileOutputStream(new File(
file, fileName)));
bos.write(data);
bos.flush();
return true;
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (bos !=null) {
bos.close();
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
return false;
}
// 往SD卡的私有Cache目录下保存文件
public static boolean saveFileToSDCardPrivateCacheDir(InputStream in,
String fileName, Context context) {
BufferedOutputStream bos =null;
BufferedInputStream bis=null;
if (isSDCardMounted()) {
File file = context.getExternalCacheDir();
String absolutePath = context.getExternalCacheDir().getAbsolutePath();
Log.e("TAG","saveFileToSDCardPrivateCacheDir: "+absolutePath );
try {
bis=new BufferedInputStream(in);
bos =new BufferedOutputStream(new FileOutputStream(new File(
file, fileName)));
byte[] buffer=new byte[1024*8];
int c=0;
while((c=bis.read(buffer))!=-1){
bos.write(buffer,0,c);
bos.flush();
}
return true;
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (bos !=null) {
bos.close();
}
if(bis!=null){
bis.close();
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
return false;
}
// 往SD卡的自定义目录下保存文件
public static boolean saveFileToSDCardCustomDir(byte[] data, String dir,
String fileName) {
BufferedOutputStream bos =null;
if (isSDCardMounted()) {
File file =new File(getSDCardBaseDir() + File.separator + dir);
if (!file.exists()) {
file.mkdirs();
}
try {
bos =new BufferedOutputStream(new FileOutputStream(new File(
file, fileName)));
bos.write(data);
bos.flush();
return true;
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (bos !=null) {
bos.close();
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
return false;
}
// 从SD卡获取文件
public static byte[] loadFileFromSDCard(String filePath) {
BufferedInputStream bis =null;
ByteArrayOutputStream baos =new ByteArrayOutputStream();
try {
bis =new BufferedInputStream(new FileInputStream(
new File(filePath)));
byte[] buffer =new byte[1024 *8];
int c =0;
while ((c = bis.read(buffer)) != -1) {
baos.write(buffer,0, c);
baos.flush();
}
return baos.toByteArray();
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (bis !=null) {
bis.close();
}
if (baos !=null) {
baos.close();
}
}catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
// 获取SD卡公有目录的路径
public static String getSDCardPublicDir(String type) {
return Environment.getExternalStoragePublicDirectory(type)
.getAbsolutePath();
}
// 获取SD卡私有Cache目录的路径
public static String getSDCardPrivateCacheDir(Context context) {
return context.getExternalCacheDir().getAbsolutePath();
}
// 获取SD卡私有Files目录的路径
public static String getSDCardPrivateFilesDir(Context context, String type) {
return context.getExternalFilesDir(type).getAbsolutePath();
}