实现一个文件过滤器

2023-07-15  本文已影响0人  奔跑的佩恩

前言

在日常的开发中,我们经常会需要通过Log文件去分析程序运行情况或者是崩溃原因,但是一般Log日志记录的内容都非常庞大且繁杂,不易分析,于是我这里就封装了一个类,用于过滤Log日志,便于分析问题。

今天涉及的内容有:

  1. 封装类FileFilter的特点
  2. 封装类FileFilter具有的公开方法
  3. 封装类FileFilter的使用
  4. 封装类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源码:

上一篇 下一篇

猜你喜欢

热点阅读