【Android】SD卡工具类
2015-12-07 22:48
344 查看
摘自:https://github.com/cundong/ZhihuPaper
import java.io.File;
import android.content.Context;
import android.os.Environment;
/**
* 类说明: SD卡工具类
*
* @date 2012-2-7
* @version 1.0
*/
public class SDCardUtils {
private static final String TYPE_CACHE = "cache";
private static final String TYPE_FILES = "files";
/**
* SD卡是否挂载
*
* @return
*/
public static boolean isMounted() {
String status = Environment.getExternalStorageState();
return status.equals(Environment.MEDIA_MOUNTED) ? true : false;
}
/**
* 获取扩展存储file的绝对路径
*
* 返回:sdcard/Android/data/{package_name}/files/
*
* @param context
* @return
*/
public static String getExternalFileDir(Context context) {
return getExternalDir(context, TYPE_FILES);
}
/**
* 获取扩展存储cache的绝对路径
*
* 返回:sdcard/Android/data/{package_name}/cache/
*
* @param context
* @return
*/
public static String getExternalCacheDir(Context context) {
return getExternalDir(context, TYPE_CACHE);
}
private static String getExternalDir( Context context, String type ) {
StringBuilder sb = new StringBuilder();
if (context == null)
return null;
if (!isMounted()) {
if (type.equals(TYPE_CACHE)) {
sb.append(context.getCacheDir()).append(File.separator);
} else {
sb.append(context.getFilesDir()).append(File.separator);
}
}
File file = null;
if (type.equals(TYPE_CACHE)) {
file = context.getExternalCacheDir();
} else {
file = context.getExternalFilesDir(null);
}
// In some case, even the sd card is mounted,
// getExternalCacheDir will return null
// may be it is nearly full.
if (file != null) {
sb.append(file.getAbsolutePath()).append(File.separator);
} else {
sb.append(Environment.getExternalStorageDirectory().getPath()).append("/Android/data/").append(context.getPackageName())
.append("/").append(type).append("/").append(File.separator).toString();
}
return sb.toString();
}
}
import java.io.File;
import android.content.Context;
import android.os.Environment;
/**
* 类说明: SD卡工具类
*
* @date 2012-2-7
* @version 1.0
*/
public class SDCardUtils {
private static final String TYPE_CACHE = "cache";
private static final String TYPE_FILES = "files";
/**
* SD卡是否挂载
*
* @return
*/
public static boolean isMounted() {
String status = Environment.getExternalStorageState();
return status.equals(Environment.MEDIA_MOUNTED) ? true : false;
}
/**
* 获取扩展存储file的绝对路径
*
* 返回:sdcard/Android/data/{package_name}/files/
*
* @param context
* @return
*/
public static String getExternalFileDir(Context context) {
return getExternalDir(context, TYPE_FILES);
}
/**
* 获取扩展存储cache的绝对路径
*
* 返回:sdcard/Android/data/{package_name}/cache/
*
* @param context
* @return
*/
public static String getExternalCacheDir(Context context) {
return getExternalDir(context, TYPE_CACHE);
}
private static String getExternalDir( Context context, String type ) {
StringBuilder sb = new StringBuilder();
if (context == null)
return null;
if (!isMounted()) {
if (type.equals(TYPE_CACHE)) {
sb.append(context.getCacheDir()).append(File.separator);
} else {
sb.append(context.getFilesDir()).append(File.separator);
}
}
File file = null;
if (type.equals(TYPE_CACHE)) {
file = context.getExternalCacheDir();
} else {
file = context.getExternalFilesDir(null);
}
// In some case, even the sd card is mounted,
// getExternalCacheDir will return null
// may be it is nearly full.
if (file != null) {
sb.append(file.getAbsolutePath()).append(File.separator);
} else {
sb.append(Environment.getExternalStorageDirectory().getPath()).append("/Android/data/").append(context.getPackageName())
.append("/").append(type).append("/").append(File.separator).toString();
}
return sb.toString();
}
}
相关文章推荐
- 《Android源码设计模式解析与实战》读书笔记(一)
- Android自定义组合型控件
- 【Java|Android】时间日期工具
- Android功能组件源代码分析之《XListView》
- Android开发中的屏幕适配问题1
- Android之Button自定义点击效果
- Android广播机制-Broadcast Receiver
- 【Android学习】真机获取SD卡遇到的问题
- Android Studio中使用NDK
- Android
- Android样式开发——selector篇
- Android Third Party Libraries and SDK's
- android - Settings
- 对于接口比较深入的认识
- 【Android】手写Android异步加载框架
- Android之EventBus
- Android如何让ListView的子组件按钮响应单击事件并修改该项子控件内容
- Android ExpandableListView
- Android Log等级的介绍
- Android的5个进程等级