首页 > 其他分享 >处理文件的小工具

处理文件的小工具

时间:2024-04-24 17:13:26浏览次数:24  
标签:文件 string filePath 处理 void sb 工具 line processMethod

处理文件的小工具

背景

在实际工作中,我们经常需要处理一些文件,比如过滤一些log,找到一批文件中的特定数据等。为了提高工作效率以及灵活性,编写一个小工具来简化这些操作。主要针对程序员,自己可以动态调整方法,这里是一个框架,记录一下,省的以后用的时候找不到了。

实现

利用委托 delegate 实现处理每一行的数据,使用 StringBuilder 记录想要的结果,最终保存到一个目录。

using System.Text;

class Program
{
    delegate void ProcessMethod(string line, StringBuilder sb);

    static void Main(string[] args)
    {
        ProcessTest();
    }

    static void ProcessTest()
    {
        MainProcess(@"E:\WorkSpace\WorkContent\Project\2024\Payment", nameof(ProcessTest), (line, sb) => {
            //Console.WriteLine(line);
            /*
            特殊处理的方法
            */            
        });
    }

    static void MainProcess(string filePath,string saveName,ProcessMethod processMethod)
    {
        string result = "";
        if (Directory.Exists(filePath))
        {           
            string[] filePaths = Directory.GetFiles(filePath); // 获取文件夹下所有文件的路径
            foreach (string fp in filePaths.Reverse().ToArray())
            {
                result += MainProcessFile(fp, processMethod);
            }
        }
        else
        {
            result = MainProcessFile(filePath, processMethod);            
        }
        File.WriteAllText($"..\\{saveName}_{DateTime.UtcNow:yyyyMMdd_HHmmss}.txt", result);
    }

    static string MainProcessFile(string filePath, ProcessMethod processMethod)
    {
        string[] lines = File.ReadAllLines(filePath); // 读取当前文件的所有行
        StringBuilder sb = new StringBuilder();
        Console.WriteLine(filePath);
        foreach (string line in lines)
        {
            processMethod(line, sb);
        }
        return sb.ToString();
    }
}

标签:文件,string,filePath,处理,void,sb,工具,line,processMethod
From: https://www.cnblogs.com/fhlsteven/p/18155880

相关文章

  • vis.js时间轴数据处理
    代码案例<!doctypehtml><html><head><title>Timeline</title><scripttype="text/javascript"src="https://unpkg.com/vis-timeline@latest/standalone/umd/vis-timeline-graph2d.min.js"></script>......
  • ELF文件格式解析器 原理 + 代码
    参考:https://bbs.kanxue.com/thread-259901.htm写在前面:   读《Linux二进制》,发现作者对ELF文件格式部分并没有做详细介绍,为了加深对elf文件格式理解,我自己着手写了个解析器,会和readelf工具协同对比。 原理:  ELF文件(目标文件)格式主要三种:1.可重定向文件(Re......
  • 18--Scrapy04--CrawlSpider、源码模板文件
    Scrapy04--CrawlSpider、源码模板文件案例:汽车之家,全站抓取二手车的信息来区分Spider和CrawlSpider注意:汽车之家的访问频率要控制一下,要不然会跳验证settings.py中设置DOWNLOAD_DELAY=3一、常规Spider#spiders/Ershou.pyimportscrapyfromscrapy.linkextra......
  • HarmonyOS 实战开发-Worker子线程中解压文件
    介绍本示例介绍在Worker子线程使用@ohos.zlib提供的zlib.decompressfile接口对沙箱目录中的压缩文件进行解压操作,解压成功后将解压路径返回主线程,获取解压文件列表。效果图预览使用说明点击解压按钮,解压test.zip文件,显示解压结果。实现思路在/src/main/ets/workers目录......
  • vis.js工具提示3d图形
    代码案例<!DOCTYPEhtml><html><head><title>Graph3Ddemo</title><style>body{font:10ptarial;}div#info{width:600px;text-align:center;......
  • git进入vim模式的处理
    1、当gitcommit没-m输入说明时,我们会进入vim模式,在此模式下可以进行提交说明;2、输入i,进入insert输入模式,输入自己提交内容的说明;3、输入完后,按ESC,下方insert消失;4、输入":",再输wq(写权限及退出),回车,这就完成了,回到命令输入界面补充:按Esc进入普通模式输入:q退出编辑器(若......
  • 鸿蒙开发实战:【文件管理】
    介绍本示例主要展示了文件管理相关的功能,使用[@ohos.multimedia.medialibrary]、[@ohos.filemanagement.userFileManager] 、[@ohos.fileio] 、[@ohos.file.fs]、[@ohos.app.ability.contextConstant]等接口,实现了增添文件、删除文件、查找指定类型文件文件、复制并移动文件、......
  • 变更文件所属用户及组
    基础知识: 在Linux中,创建一个文件时,该文件的拥有者都是创建该文件的用户。该文件用户可以修改该文件的拥有者及用户组,当然root用户可以修改任何文件的拥有者及用户组。在Linux中,对于文件的权限(rwx),分为三部分,一部分是该文件的拥有者所拥有的权限,一部分是该文件所在用户组的用户所......
  • python之读取ini文件
    #ini文件[web_config]#前台ldap登陆:login_name=ut251login_pwd=wanghu123读取ini文件内容defread_config(section,key):try:config=configparser.ConfigParser()#类实例化#ini文件路径config_path=os.path.join(product_path,......
  • composer update 依赖文件没有任何问题,依然报错it could not be found in any version
    一、报错案例composerupdate或者composerinstallcomposer.json依赖文件没有任何问题,依然报错itcouldnotbefoundinanyversion 二、解决主要就是切换镜像源:composerconfig-grepo.packagistcomposerhttps://packagist.org之后再执行composerinstall即可!......