FileSizeUtils.java 源代码


package utils;

import com.hichip.base.HiLog;
import com.ss.android.socialbase.downloader.constants.DownloadConstants;
import java.io.File;
import java.io.FileInputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;

public class FileSizeUtils {
    public static final int SIZETYPE_B = 1;
    public static final int SIZETYPE_GB = 4;
    public static final int SIZETYPE_KB = 2;
    public static final int SIZETYPE_MB = 3;

    public static double getFileOrFilesSize(String str, int i) {
        int i2;
        File file = new File(str);
        try {
            if (file.isDirectory()) {
                i2 = getFileSizes(file);
            } else {
                i2 = getFileSize(file);
            }
        } catch (Exception e) {
            e.printStackTrace();
            HiLog.e("获取文件大小获取失败!");
            i2 = 0;
        }
        return FormetFileSize(i2, i);
    }

    public static String getAutoFileOrFilesSize(String str) {
        long j;
        int fileSize;
        File file = new File(str);
        try {
            if (file.isDirectory()) {
                fileSize = getFileSizes(file);
            } else {
                fileSize = getFileSize(file);
            }
            j = fileSize;
        } catch (Exception e) {
            e.printStackTrace();
            HiLog.e("获取文件大小获取失败!");
            j = 0;
        }
        return FormetFileSize(j);
    }

    private static int getFileSize(File file) throws Exception {
        if (file.exists()) {
            return new FileInputStream(file).available();
        }
        file.createNewFile();
        HiLog.e("获取文件大小文件不存在!");
        return 0;
    }

    private static int getFileSizes(File file) throws Exception {
        int fileSize;
        File[] listFiles = file.listFiles();
        int i = 0;
        for (int i2 = 0; i2 < listFiles.length; i2++) {
            if (listFiles[i2].isDirectory()) {
                fileSize = getFileSizes(listFiles[i2]);
            } else {
                fileSize = getFileSize(listFiles[i2]);
            }
            i += fileSize;
        }
        return i;
    }

    private static String FormetFileSize(long j) {
        DecimalFormat decimalFormat = new DecimalFormat("#.00");
        if (j == 0) {
            return "0B";
        }
        if (j < 1024) {
            return decimalFormat.format(j) + "B";
        }
        if (j < 1048576) {
            return decimalFormat.format(j / 1024.0d) + "KB";
        }
        if (j < DownloadConstants.GB) {
            return decimalFormat.format(j / 1048576.0d) + "MB";
        }
        return decimalFormat.format(j / 1.073741824E9d) + "GB";
    }

    private static int FormetFileSize(int i, int i2) {
        if (i2 == 1) {
            return i;
        }
        if (i2 == 2) {
            return i / 1024;
        }
        if (i2 == 3) {
            return i / 1048576;
        }
        if (i2 != 4) {
            return 0;
        }
        return i / 1073741824;
    }

    public static ArrayList<String> orderByDate(String str) {
        ArrayList<String> arrayList = new ArrayList<>();
        File[] listFiles = new File(str).listFiles();
        Arrays.sort(listFiles, new Comparator<File>() {
            @Override
            public boolean equals(Object obj) {
                return true;
            }

            @Override
            public int compare(File file, File file2) {
                long lastModified = file.lastModified() - file2.lastModified();
                if (lastModified > 0) {
                    return 1;
                }
                return lastModified == 0 ? 0 : -1;
            }
        });
        for (File file : listFiles) {
            if (!file.isDirectory()) {
                arrayList.add(file.getAbsolutePath());
            }
            HiLog.e("" + file.getAbsolutePath() + "dddddd" + new SimpleDateFormat(TimeUtil.FORMAT_DATE_TIME_NEW2).format(new Date(file.lastModified())));
        }
        return arrayList;
    }
}