package com.todayinfo.utils; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.text.DecimalFormat; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Environment; import android.util.Base64; public class FileUtils { /** * 获取sd卡路径 * * @return */ public static String getSDPath() { File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在 if (sdCardExist) { sdDir = Environment.getExternalStorageDirectory();// 获取跟目录 } if (sdDir == null) return null; return sdDir.toString(); } public static String getConfigFilePath() { String sdPath = getSDPath(); if (sdPath == null) return null; return getSDPath() + "/biandang/ServerConfig.txt"; } /** * encodeBase64File:(将文件转成base64 字符串). * * @param path * 文件路径 * @return * @throws Exception */ public static String encodeBase64File(String path) throws Exception { File file = new File(path); FileInputStream inputFile = new FileInputStream(file); byte[] buffer = new byte[(int) file.length()]; inputFile.read(buffer); inputFile.close(); return Base64.encodeToString(buffer, Base64.DEFAULT); } public static String Base64Pic(String path) throws Exception { Bitmap bm = getSmallBitmap(path, 300, 300); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] b = baos.toByteArray(); return Base64.encodeToString(b, Base64.DEFAULT); } // 根据路径获得图片并压缩,返回bitmap用于显示 public static Bitmap getSmallBitmap(String filePath, int w, int h) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, options); options.inSampleSize = calculateInSampleSize(options, w, h); options.inJustDecodeBounds = false; return BitmapFactory.decodeFile(filePath, options); } // 计算图片的缩放值 public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int heightRatio = Math.round((float) height/ (float) reqHeight); final int widthRatio = Math.round((float) width / (float) reqWidth); inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio; } return inSampleSize; } // 获取图片缓存大小 public static String getDiskCacheSize(Context context) { int sizeSum = 0; File diskfile = Utils.createDefaultCacheDir(context); String[] diskfileList = diskfile.list(); for (int i = 0; i < diskfileList.length; i++) { File filesize = new File(diskfile + "/" + diskfileList[i]); sizeSum = sizeSum + (int) filesize.length(); System.out.println(sizeSum); } DecimalFormat df = new DecimalFormat(".00"); double sizeSumKB = sizeSum / 1024; if (sizeSumKB < 1) { return String.valueOf(sizeSum) + "B"; } else { double sizeSumMB = sizeSumKB / 1024; if (sizeSumMB < 1) { return String.valueOf((int) sizeSumKB) + "KB"; } else { return String.valueOf(df.format(sizeSumMB)) + "MB"; } } } }