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;
}
}