博客将会不断总结
1、随机生成文件名:
/**
* 随机生成文件名称
*
* @param suffixName
* 文件的后缀名,如:.mp3 ; .amr -> 录音格式的后缀名
* @return
*/
private String createFileName(String suffixName) {
return UUID.randomUUID().toString() + suffixName;
}
2、手机缓存地址:
/**
* 获取手机缓存地址,如果外置内存卡存在,则取得外置内存卡的缓存路径 否则获取内置内存卡的缓存路径,根据类型数据创建相应的文件夹。
*
* @param context
* 上下文对象
* @param typeName
* 数据类型的文件夹的名称,如txt ;bitmap
* @return
*/
private File getDiskCacheDir(Context context, String typeName) {
String cachePath;
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)
|| !Environment.isExternalStorageRemovable()) {
cachePath = context.getExternalCacheDir().getPath();
} else {
cachePath = context.getCacheDir().getPath();
}
return new File(cachePath, typeName);
}
/**
* 获取应用的版本号
* @param context
* @return
*/
private int getAppVersion(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0);
return info.versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return 1;
}
4、将字符串转换成 MD5 编码:
/**
* 将字符串转换为 MD5 编码
* @param key
* @return
*/
public String hashKeyDisk(String key){
String cacheKey = null ;
MessageDigest messageDigest;
try {
messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(key.getBytes());
cacheKey = byteToHexString(messageDigest.digest());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return cacheKey;
}
private String byteToHexString(byte[] bytes){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
String hex = Integer.toHexString(0xFF & bytes[i]);
if (hex.length() ==1) {
sb.append('0');
}
sb.append(hex);
}
return sb.toString();
}
5、对SD卡文件进行筛选
private String path = Environment.getExternalStorageDirectory().getAbsolutePath();
private void getFileName(final List<String> list , File path){
path.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
String name = pathname.getName();
int i = name.lastIndexOf('.'); // 找到文件的下标 . 的最后出现的位置
if (i != -1) {
name = name.substring(i); // 取得name的子字符串以i为开始位置
// equalsIgnoreCase 表示不顾大小写进行
if (name.equalsIgnoreCase(".mp4")||name.equalsIgnoreCase(".rmvb")) {
list.add(pathname.getName());
return true;
}
}else if (pathname.isDirectory()) { //如果该pathname是个路径
getFileName(list, pathname);
}
return false;
}
});
}
不足:可能对于有些手机不能对外置SD卡的数据进行匹配,