FileUtil 类主要提供了以下功能:
在保存日志之前,会检查日志文件的大小是否超过 10MB,如果超过则会删除该文件。 将日志信息以追加的方式写入到日志文件中。
object FileUtil {
var PROJECT_FILE_PATH :String = ""
val catchLogName = "log_catch.txt"
/**
* 初始化文件目录
*/
fun init(context: Context) {
PROJECT_FILE_PATH = getExternalStorageState(context) + File.separator // 项目路径
}
/**
* 获取存储根目录
* @param context
* @return 外部存储根目录 || 内部根目录
*/
fun getExternalStorageState(context: Context): String? {
val state = Environment.getExternalStorageState()
return if (Environment.MEDIA_MOUNTED == state) {
val baseDirFile = context.getExternalFilesDir(null)
if (baseDirFile == null) {
context.filesDir.absolutePath
} else {
baseDirFile.absolutePath
}
} else {
context.filesDir.absolutePath
}
}
/**
* 将日志信息保存到指定的文件中。
*
* @param fileName 需要保存的日志文件名。
* @param message 要写入日志的信息。
* 说明:如果日志文件已存在且大小超过10MB,将删除旧的日志文件。
*/
fun saveLog(fileName: String, message: String) {
val time = DateUtil.parseToString(System.currentTimeMillis(), DateUtil.yyyy_MM_dd_HH_mm_ss)
val hint = "$time: $message\n\n\n"
// 创建文件对象
val file = File(PROJECT_FILE_PATH+fileName)
// 判断文件是否存在
if (file.exists()) {
// 获取文件大小
val fileSize = file.length()
// 判断文件大小是否大于10M
if (fileSize > 10 * 1024 * 1024) { // 10M,单位为字节
// 文件超过10M,删除文件
file.delete()
}
}
// 写入数据到文件
try {
// 创建文件输出流,并指定以追加模式打开文件
val fos = FileOutputStream(file, true)
// 将数据写入文件
fos.write(hint.toByteArray())
// 关闭文件输出流
fos.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
Application初始化:
FileUtil.init(context);
调用方式:
FileUtil.saveLog(FileUtil.catchLogName,"error msg")