美文网首页
实现一个文件过滤器

实现一个文件过滤器

作者: 奔跑的佩恩 | 来源:发表于2023-07-15 10:46 被阅读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源码:

相关文章

  • 基于Tomcat的Servlet过滤器(1)实例及加载执行源码简

    实例 实现一个简单的过滤器只需要两步1,实现Filter接口写一个过滤器实现类 2,web.xml文件中新增相关f...

  • spring cloud zuul的用法(token,限流)

    一、pom配置文件 二、配置文件设置 三、token实现 3.1、token过滤器实现 3.2、hashmap缓存...

  • 文件过滤器FilenameFilter

    JDK中提供了一个FilenameFilter的接口用来实现文件过滤功能,可以使用这个文件过滤器来实现上一节中的问...

  • Java使用文件过滤器FileFilter、FilenameFi

    搜索文件优化,使用文件过滤器来搜索文件 我们可以使用过滤器来实现在某一目录下指定文件格式的搜索在File类中有两个...

  • 小白实例1

    运行的结果是在桌面建立了一个名为hello的txt文件,内容为hello world。 敏感词过滤器 上述代码实现...

  • Java Web 过滤器

    过滤器的工作原理 过滤器的生命周期 过滤器链 Web项目中多个过滤器实现,多个过滤器对应同一个路近执行顺序如何? ...

  • 分布式会话和单点登录

    1.实现微服务 分布式会话: redis spring session (引入jar包,配置文件,加注解) 过滤器...

  • kata05:布隆过滤器

    这次kata的内容:实现一个布隆过滤器 布隆过滤器 (Bloom Filter) 什么是布隆过滤器呢?简单来说, ...

  • JavaWeb基础之Filter

    编写一个过滤器 实现Filter接口 配置拦截的URL路径:在web.xml中填写 过滤器的常见应用 实现用户登录...

  • 二刷:MVC(2) 过滤器

    一. 过滤器 1.身份验证过滤器 1.2自定义过滤器 创建文件夹Filters用来存放所有的过滤器 1.添加一个M...

网友评论

      本文标题:实现一个文件过滤器

      本文链接:https://www.haomeiwen.com/subject/bfibudtx.html