176 lines
5.3 KiB
Java
176 lines
5.3 KiB
Java
package com.arialyy.downloadutil;
|
||
|
||
import android.util.Log;
|
||
|
||
import java.io.File;
|
||
import java.io.FileInputStream;
|
||
import java.io.FileNotFoundException;
|
||
import java.io.FileOutputStream;
|
||
import java.io.IOException;
|
||
import java.io.InputStream;
|
||
import java.math.BigDecimal;
|
||
import java.util.Properties;
|
||
|
||
/**
|
||
* Created by lyy on 2016/1/22.
|
||
*/
|
||
public class Util {
|
||
private static final String TAG = "util";
|
||
|
||
/**
|
||
* 格式化文件大小
|
||
*
|
||
* @param size file.length() 获取文件大小
|
||
* @return
|
||
*/
|
||
public static String formatFileSize(double size) {
|
||
double kiloByte = size / 1024;
|
||
if (kiloByte < 1) {
|
||
return size + "Byte(s)";
|
||
}
|
||
|
||
double megaByte = kiloByte / 1024;
|
||
if (megaByte < 1) {
|
||
BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));
|
||
return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "KB";
|
||
}
|
||
|
||
double gigaByte = megaByte / 1024;
|
||
if (gigaByte < 1) {
|
||
BigDecimal result2 = new BigDecimal(Double.toString(megaByte));
|
||
return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "MB";
|
||
}
|
||
|
||
double teraBytes = gigaByte / 1024;
|
||
if (teraBytes < 1) {
|
||
BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));
|
||
return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB";
|
||
}
|
||
BigDecimal result4 = new BigDecimal(teraBytes);
|
||
return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB";
|
||
}
|
||
/**
|
||
* 创建目录 当目录不存在的时候创建文件,否则返回false
|
||
*
|
||
* @param path
|
||
* @return
|
||
*/
|
||
public static boolean createDir(String path) {
|
||
File file = new File(path);
|
||
if (!file.exists()) {
|
||
if (!file.mkdirs()) {
|
||
Log.d(TAG, "创建失败,请检查路径和是否配置文件权限!");
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
* 创建文件 当文件不存在的时候就创建一个文件,否则直接返回文件
|
||
*
|
||
* @param path
|
||
* @return
|
||
*/
|
||
public static File createFile(String path) {
|
||
File file = new File(path);
|
||
if (!file.getParentFile().exists()) {
|
||
Log.d(TAG, "目标文件所在路径不存在,准备创建……");
|
||
if (!createDir(file.getParent())) {
|
||
Log.d(TAG, "创建目录文件所在的目录失败!文件路径【" + path + "】");
|
||
}
|
||
}
|
||
// 创建目标文件
|
||
try {
|
||
if (!file.exists()) {
|
||
if (file.createNewFile()) {
|
||
Log.d(TAG, "创建文件成功:" + file.getAbsolutePath());
|
||
}
|
||
return file;
|
||
} else {
|
||
return file;
|
||
}
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
return null;
|
||
}
|
||
/**
|
||
* 设置打印的异常格式
|
||
*/
|
||
public static String getPrintException(Throwable ex) {
|
||
StringBuilder err = new StringBuilder();
|
||
err.append("ExceptionDetailed:\n");
|
||
err.append("====================Exception Info====================\n");
|
||
err.append(ex.toString());
|
||
err.append("\n");
|
||
StackTraceElement[] stack = ex.getStackTrace();
|
||
for (StackTraceElement stackTraceElement : stack) {
|
||
err.append(stackTraceElement.toString()).append("\n");
|
||
}
|
||
Throwable cause = ex.getCause();
|
||
if (cause != null) {
|
||
err.append("【Caused by】: ");
|
||
err.append(cause.toString());
|
||
err.append("\n");
|
||
StackTraceElement[] stackTrace = cause.getStackTrace();
|
||
for (StackTraceElement stackTraceElement : stackTrace) {
|
||
err.append(stackTraceElement.toString()).append("\n");
|
||
}
|
||
}
|
||
err.append("===================================================");
|
||
return err.toString();
|
||
}
|
||
/**
|
||
* 读取下载配置文件
|
||
*
|
||
* @param file
|
||
* @return
|
||
*/
|
||
public static Properties loadConfig(File file) {
|
||
Properties properties = new Properties();
|
||
FileInputStream fis = null;
|
||
try {
|
||
fis = new FileInputStream(file);
|
||
properties.load(fis);
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
} finally {
|
||
try {
|
||
if (fis != null) {
|
||
fis.close();
|
||
}
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
return properties;
|
||
}
|
||
|
||
/**
|
||
* 保存配置文件
|
||
*
|
||
* @param file
|
||
* @param properties
|
||
*/
|
||
public static void saveConfig(File file, Properties properties) {
|
||
FileOutputStream fos = null;
|
||
try {
|
||
fos = new FileOutputStream(file, false);
|
||
properties.store(fos, null);
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
} finally {
|
||
try {
|
||
if (fos != null) {
|
||
fos.flush();
|
||
fos.close();
|
||
}
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
}
|
||
}
|