前言
在日常的開發(fā)中襟士,我們經(jīng)常會需要通過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`的內容:
我是中國人
世界因你而精彩
今天好熱啊
王者從不抱怨環(huán)境
在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
文件,摘取其中出現(xiàn)的關鍵字王
房维,好
所在行的內容沼瘫,將其輸入到新文件D:/E/bug/a1.txt
中,則a1.txt
文件內容如下:
今天好熱啊
王者從不抱怨環(huán)境
接著我們再舉個過濾D:/E/bug/a.txt
文件咙俩,排除其中出現(xiàn)的關鍵字王
耿戚,好
所在行的內容,將剩余內容輸入到新文件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
源碼: