content: package com.bedpotato.musicplayerproxy.utils;
  
  import java.io.File;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.Comparator;
  import java.util.List;
  
  import android.os.StatFs;
  
  import com.bedpotato.musicplayerproxy.Constants;
  
  public class ProxyUtils {
  	private static final String LOG_TAG = ProxyUtils.class.getSimpleName();
  
  	/**
  	 * 删除多余的缓存文件
  	 * 
  	 * @param dirPath
  	 *            缓存文件的文件夹路径
  	 * @param maximun
  	 *            缓存文件的最大数量
  	 */
  	static protected void asynRemoveBufferFile(final int maximun) {
  		new Thread() {
  			public void run() {
  				List<File> lstBufferFile = getFilesSortByDate(Constants.DOWNLOAD_PATH);
  				while (lstBufferFile.size() > maximun) {
  					lstBufferFile.get(0).delete();
  					lstBufferFile.remove(0);
  				}
  			}
  		}.start();
  	}
  
  	/**
  	 * 获取外部存储器可用的空间
  	 * 
  	 * @return
  	 */
  	static protected long getAvailaleSize(String dir) {
  		StatFs stat = new StatFs(dir);// path.getPath());
  		long totalBlocks = stat.getBlockCount();// 获取block数量
  		long blockSize = stat.getBlockSize();
  		long availableBlocks = stat.getAvailableBlocks();
  		return availableBlocks * blockSize; // 获取可用大小
  	}
  
  	/**
  	 * 获取文件夹内的文件，按日期排序，从旧到新
  	 * 
  	 * @param dirPath
  	 * @return
  	 */
  	static private List<File> getFilesSortByDate(String dirPath) {
  		List<File> result = new ArrayList<File>();
  		File dir = new File(dirPath);
  		File[] files = dir.listFiles();
  		if (files == null || files.length == 0)
  			return result;
  
  		Arrays.sort(files, new Comparator<File>() {
  			public int compare(File f1, File f2) {
  				return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
  			}
  		});
  
  		for (int i = 0; i < files.length; i++) {
  			result.add(files[i]);
  		}
  		return result;
  	}
  
  	public static String getExceptionMessage(Exception ex) {
  		String result = "";
  		StackTraceElement[] stes = ex.getStackTrace();
  		for (int i = 0; i < stes.length; i++) {
  			result = result + stes[i].getClassName() + "." + stes[i].getMethodName() + "  " + stes[i].getLineNumber()
  					+ "line" + "\r\n";
  		}
  		return result;
  	}
  
  }
  