package com.konka.music.util; import java.io.File; import java.io.FileInputStream; import java.text.DecimalFormat; /** * @description 文件辅助类,获取目录容量,格式化字节 * */ public class FileUtils { /*** * * 功能:创建目录 * 作者:Ouyangweize * 时间:2014-1-9上午8:51:29 * @param path * @return */ public static String createDirs(String dirPath) { //konka-wangxu-20141209-根据默认路径,创建文件目录-start String rootDir = SDCardUtil.getInstance().getCurrentSDPath(); // 创建一个文件夹对象,赋值为外部存储器的目录 // File sdcardDir = new File(rootDir); String path = /*sdcardDir.getPath()*/ rootDir + dirPath; //得到一个路径,内容是sdcard的文件夹路径和名字 File path1 = new File(path); if (!path1.exists()) { //若不存在,创建目录,可以在应用启动的时候创建 path1.mkdirs(); } // KLog.v("wangxu", "rootDir=" + rootDir + ", path:"+path); return path1.getPath() + "/"; } /** * 格式化容量 * */ public static String formatFileSize(double fileS) { DecimalFormat df = new DecimalFormat("#.00"); String fileSizeString = ""; if(fileS < 0) { fileSizeString = "0B"; }else if (fileS < 1024) { fileSizeString = df.format(fileS) + "B"; } else if (fileS < 1048576) { fileSizeString = df.format(fileS / 1024) + "K"; } else if (fileS < 1073741824) { fileSizeString = df.format(fileS / 1048576) + "M"; } else { fileSizeString = df.format(fileS / 1073741824) + "G"; } return fileSizeString; } /** * 获取文件大小 * */ public long getFileSizes(File f) throws Exception{ long s=0; if (f.exists()) { FileInputStream fis = null; fis = new FileInputStream(f); s= fis.available(); } else { f.createNewFile(); // System.out.println("文件不存在"); } return s; } /** * 递归方法获取文件大小 * */ public double getFileSize(File f)throws Exception { double size = 0; File flist[] = f.listFiles(); for (int i = 0; i < flist.length; i++) { if (flist[i].isDirectory()) { size = size + getFileSize(flist[i]); } else { size = size + flist[i].length(); } } return size; } /** * 递归求取目录文件个数 * */ public long getlist(File f){ long size = 0; File flist[] = f.listFiles(); size=flist.length; for (int i = 0; i < flist.length; i++) { if (flist[i].isDirectory()) { size = size + getlist(flist[i]); size--; } } return size; } /** * 取得文件大小 * */ public String getsize(String path){ double l = 0; try{ File ff = new File(path); if (ff.isDirectory()) { //如果路径是文件夹的时候 l = getFileSize(ff); // System.out.println(path + "目录的大小为:" + formatFileSize(l)); } else { l = getFileSizes(ff); // System.out.println(path + "文件的大小为:" + formatFileSize(l)); } } catch (Exception e){ e.printStackTrace(); } return formatFileSize(l); } /** * 取得文件大小 * */ public double get_size(String path){ double l = 0; try{ File ff = new File(path); if (ff.isDirectory()) { //如果路径是文件夹的时候 l = getFileSize(ff); } else { l = getFileSizes(ff); } } catch (Exception e){ e.printStackTrace(); } return l; } }