您的位置:首页 > 移动开发 > Android开发

【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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: