前言
在日常的开发中,我们经常会需要通过Log
文件去分析程序运行情况或者是崩溃原因,但是一般Log
日志记录的内容都非常庞大且繁杂,不易分析,于是我这里就封装了一个类,用于过滤Log
日志,便于分析问题。
今天涉及的内容有:
- 封装类
FileFilter
的特点 - 封装类
FileFilter
具有的公开方法 - 封装类
FileFilter
的使用 - 封装类
FileFilter
源码
一. 封装类 FileFilter 的特点
封装类FileFilter
具有以下特点:
- 删除含关键字的内容行并保留剩余文件内容,输入到新文件中
- 仅保留含关键字的内容行并输出到新文件中
封装类FileFilter
可在Java
项目中使用,也可在Android
项目中使用。若是在Android
中调用,则需要赋予读写及存储权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
具体涉及到的存储及权限申请可参考以下文章
SpUtil多样加密存储,兼容android9.0
RxPermission申请权限
二. 封装类FileFilter具有的公开方法
封装类FileFilter
具有以下公开方法:
/**
* 添加关键字
*
* @param key String 关键字
* @return Filefilter.Companion
*/
fun addKey(key: String): FileFilter.Companion
/**
* 移除关键字
*
* @param key String
* @return Boolean
*/
fun removeKey(key: String): Boolean
/**
* 清空关键字集合
*/
fun clearKey()
/**
* 处理文件
*
* @param inputFilePath String 要读取的原始文件路径
* @param outputFilePath String 要写入的新文件路径
* @param isPick Boolean true:摘取关键字后得到的File
* false:排除关键字后得到的File
*/
fun handlerKeyFile(inputFilePath: String, outputFilePath: String, isPick: Boolean)
三. 封装类 FileFilter 的使用
下面以在``Java项目中的使用为例进行讲解。 先给出需要处理的源文件
a.txt`的内容:
我是中国人
世界因你而精彩
今天好热啊
王者从不抱怨环境
在Main
方法中调用代码如下:
package com.jk
object MyClass {
@JvmStatic
fun main(args: Array<String>) {
FileFilter.addKey("王")
.addKey("好")
.handlerKeyFile("D:/E/bug/a.txt","D:/E/bug/a1.txt",true)
}
}
以上代码表示过滤D:/E/bug/a.txt
文件,摘取其中出现的关键字王
,好
所在行的内容,将其输入到新文件D:/E/bug/a1.txt
中,则a1.txt
文件内容如下:
今天好热啊
王者从不抱怨环境
接着我们再举个过滤D:/E/bug/a.txt
文件,排除其中出现的关键字王
,好
所在行的内容,将剩余内容输入到新文件D:/E/bug/a2.txt
中,代码如下:
object MyClass {
@JvmStatic
fun main(args: Array<String>) {
FileFilter.addKey("王")
.addKey("好")
.handlerKeyFile("D:/E/bug/a.txt","D:/E/bug/a2.txt",false)
}
}
运行后a2.txt
文件内容如下:
我是中国人
世界因你而精彩
四. 封装类 FileFilter 源码
下面给出封装类FileFilter
源码: