当前位置: 首页 > news >正文

使用C#在目录层次结构中搜索文件以查找目标字符串

例程以递归方式搜索目录层次结构中的文件以查找目标字符串。它可以搜索几乎任何类型的文件,即使它不包含 Windows 理解的文本。例如,它可以搜索 DLL 和可执行文件以查看它们是否恰好包含字符串。

下面的代码中显示的ListFiles 方法完成了大部分工作。

// Add the files in this directory's subtree 
// that match the pattern to the ListBox.
private void ListFiles(ListBox lst, string pattern,DirectoryInfo dir_info, string target)
{// Get the files in this directory.FileInfo[] fs_infos = dir_info.GetFiles(pattern);foreach (FileInfo fs_info in fs_infos){if (target.Length == 0){lstResults.Items.Add(fs_info.FullName);} else{string txt = File.ReadAllText(fs_info.FullName);if (txt.IndexOf(target, StringComparison.OrdinalIgnoreCase) >= 0){lstResults.Items.Add(fs_info.FullName);}}}// Search subdirectories.DirectoryInfo[] subdirs = dir_info.GetDirectories();foreach (DirectoryInfo subdir in subdirs){ListFiles(lst, pattern, subdir, target);}
}

ListFiles将DirectoryInfo作为参数,表示搜索应从哪里开始。它使用该对象的GetFiles方法获取与文件模式匹配的文件列表。如果没有要查找的目标字符串,程序只会将文件添加到结果列表中。

如果有目标字符串,程序将使用File.ReadAllText将文件的内容读入字符串。如果目标在字符串中,程序将文件添加到列表中。程序使用IndexOf方法而不是Contains,因此它可以使用OrdinalIgnoreCase参数在查找匹配项时忽略大小写。

搜索完此目录中的文件后,程序使用DirectoryInfo对象的GetDirectories方法获取其子目录的列表。程序递归调用ListFiles来搜索每个子目录。

这就是搜索代码的全部内容,但程序还做了一件更有趣的事情。启动时,它使用以下代码来确定是否从“发送到”菜单执行。

// If we launched from the Send To menu,
// use the argument as our directory.
private void Form1_Load(object sender, EventArgs e)
{if (System.Environment.GetCommandLineArgs().Length > 1){txtDirectory.Text = System.Environment.GetCommandLineArgs()[1];txtTarget.Focus();}
}

此代码检查程序的命令行参数。第一个参数始终是执行程序的名称。如果有第二个参数,则它应该是拖到可执行文件上或通过“发送到”菜单发送到程序的目录的名称。如果有第二个参数,程序会将其放在“目录”文本框中。

为了方便使用此程序,我将其添加到“发送到”菜单中。然后我可以右键单击目录,打开“发送到”菜单(在 Windows 11 中更难),然后选择此程序以使其搜索目录。有关向“发送到”菜单添加项目的更多信息,请参阅向“发送到”菜单添加项目。

结果并不像文件资源管理器的搜索那样花哨。您无法按文件日期、大小、作者、评级或任何其他您永远不想在搜索中使用的内容进行搜索。如果您愿意,您可以添加这些功能。

但是,这个程序可以搜索任何类型的文件。它甚至比 Windows 搜索还要快得多。

查看结果:

相关文章:

使用C#在目录层次结构中搜索文件以查找目标字符串

例程以递归方式搜索目录层次结构中的文件以查找目标字符串。它可以搜索几乎任何类型的文件,即使它不包含 Windows 理解的文本。例如,它可以搜索 DLL 和可执行文件以查看它们是否恰好包含字符串。 下面的代码中显示的ListFiles 方法完成了大部分工作。 …...

基于Redis实现令牌桶算法

基于Redis实现令牌桶算法 令牌桶算法算法流程图优点缺点 实现其它限流算法 令牌桶算法 令牌桶是一种用于分组交换和电信网络的算法。它可用于检查数据包形式的数据传输是否符合定义的带宽和突发性限制(流量不均匀或变化的衡量标准)。它还可以用作调度算…...

[Java] 使用 VSCode 来开发 Java

目录 前言Java 环境怎么看自己是否已经配置完成?安装 JDK安装 Maven 环境修改 Maven 依赖源 完善 VS Code配置插件配置 Maven配置 Maven Settings配置 Maven 可执行文件地址 前言 由于使用 VSCode 编码已经成为习惯,并且它确实相对其他的 IDE 较为轻量化…...

奇怪的知识又增加了,ESP32下的Lisp编程:ULisp--Lisp for microcontrollers

ESP32下有MicroPython,那么我就在想,有Lisp语言支持吗?答案是果然有!有ULisp,专门为MCU设计的Lisp! 网址:uLisp - Lisp for microcontrollers 介绍:用于微控制器的 Lisp 适用于 Ar…...

STM32标准库学习之寄存器方法点亮LED灯

STM32C8T6最小系统开发板,点亮PC13引脚的LED灯 1.使能PC13引脚的定时器 PC13引脚为GPIOC组的第13个端口,GPIO的时钟使能定时器为RCC_APB2ENR,这是可以从手册中得出的,如下图所示 从下图可以得出,若要使能GPIOC端口&a…...

Jenkins:持续集成与持续部署的利器

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是Jenkins 2、Jenkins的起源 二、Jenkins的核心…...

概率论得学习和整理30: 用EXCEL 描述泊松分布 poisson distribution

目录 1 泊松分布的基本内容 1.1 泊松分布的关键点 1.1.1 属于离散分布 1.1.2 泊松分布的特点:每个子区间内概率相等 , λ就是平均概率 1.2 核心参数 1.3 pmf公式 1.4 期望和方差 2 例1:用EXCEL计算泊松分布的概率 3 比较λ不同值时…...

汽车SoC芯片及其安全岛设计与未来发展趋势(学习笔记)

SoC系列已发布多篇文章,之前应该发布到4.3章节,后续还有包含常见汽车SoC,SoC评价指标,产业链及发展趋势等,均见已发布完整版本付费资源,链接如下: 汽车SoC芯片及其安全岛设计与未来发展趋势&am…...

【排序算法】——选择排序

前言 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小&#x…...

第十五章 Linux Shell 编程

15.1 Shell 变量 了解:Shell的功能 了解:Shell的种类 了解:Shell的调用 了解:Shell变量的概念 了解:Shell变量的定义 了解:Shell数组变量 了解:Shell内置变量 了解:双引号 和…...

【c++笔试强训】(第三十八篇)

目录 不相邻取数(动态规划-线性dp) 题目解析 讲解算法原理 编写代码 空调遥控(⼆分/滑动窗⼝) 题目解析 讲解算法原理 编写代码 不相邻取数(动态规划-线性dp) 题目解析 1.题目链接:不相…...

go 自己写序列化函数不转义

以map[int32]string转化为[]byte为例 背景:算法传给我一个map[int32]string类型的值(map的值本身是json转化成的string),我需要把这个值生成一个文件上传到OSS,但是发现通过url下载下来的文件里面有转义字符。 原因&a…...

一般行业安全管理人员考试题库分享

1.在高速运转的机械飞轮外部安装防护罩,属于(B)安全技术措施。 A.限制能量 B.隔离 C.故障设计 D.设置薄弱环节 2.生产经营单位的(B)是本单位安全生产的第一责任人,对落实本单位安全生产主体责任全面负责,具体履行安全生产管理职责。 A.全员 B…...

Marketo REST API 批量修改邮件内容

以下是更加细化的 使用 Marketo REST API 批量修改邮件内容 的步骤,详细解释每个阶段的操作,包括 API 的请求、数据处理及潜在问题解决。 前期准备工作 确保 Marketo API 访问权限 你需要 Marketo REST API 用户 和 API Role,有权限访问邮件资…...

《云原生安全攻防》-- K8s安全框架:认证、鉴权与准入控制

从本节课程开始,我们将来介绍K8s安全框架,这是保障K8s集群安全比较关键的安全机制。接下来,让我们一起来探索K8s安全框架的运行机制。 在这个课程中,我们将学习以下内容: K8s安全框架:由认证、鉴权和准入控…...

淘宝获取sku详细信息 API

淘宝获取 SKU 详细信息的 API 主要是 taobao.item_sku 接口,以下是详细介绍: 公共参数 key:调用 key,是调用接口的身份验证信息,必须以 GET 方式拼接在 URL 中1.secret:调用密钥,与 key 配合使…...

基于Spring Boot的体育商品推荐系统

一、系统背景与目的 随着电子商务的快速发展和人们健康意识的提高,体育商品市场呈现出蓬勃发展的态势。然而,传统的体育商品销售方式存在商品种类繁多、用户选择困难、个性化需求无法满足等问题。为了解决这些问题,基于Spring Boot的体育商品…...

C++小细节笔记

1、C字符串转数字 – 数字转字符串 //string > int 使用 stoi stol//int > string 使用 to_string()2、C遍历 int evalRPN(vector<string>& tokens) {stack<int> intStack;for(string &str:tokens){}bool isValid(string s) {stack<char> …...

go语言并发读写数据队列,不停写的同时,一次最多读取指定量数据(逐行注释)

1、数据队列可以存储任意类型的一个数据&#xff08;下程序是添加整数值&#xff09;。 数据队列代码点这里查看《go语言结构体实现数据结构队列&#xff08;先进先出&#xff09;存储数据&#xff08;逐行注释&#xff09;》 2、读写操作并发进行&#xff08;下程序向队列中…...

密码学——密码学概述、分类、加密技术(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 密码学 大数据…...

终极指南:10分钟掌握SPT-AKI存档编辑器完整使用教程

终极指南&#xff1a;10分钟掌握SPT-AKI存档编辑器完整使用教程 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitcode.com/gh_mirrors/sp/…...

Kubernetes部署Valheim游戏服务器:云原生架构实践指南

1. 项目概述&#xff1a;当维京英灵殿遇上Kubernetes如果你和我一样&#xff0c;既沉迷于《英灵神殿》&#xff08;Valheim&#xff09;里那种与三五好友一起伐木、采矿、建造长屋&#xff0c;然后被巨魔追得满地图跑的原始乐趣&#xff0c;又恰好是一名整天和容器、编排系统打…...

基于Adafruit FLORA的红外遥控胸针DIY:从嵌入式编程到可穿戴艺术

1. 项目概述&#xff1a;一个藏在时尚配饰里的“电视终结者”几年前&#xff0c;我在一个朋友聚会上&#xff0c;发现大家明明在聊天&#xff0c;眼睛却总是不自觉地瞟向角落里那个正在播放无聊广告的电视。直接走过去关掉显得有点突兀&#xff0c;找遥控器又太麻烦。那一刻我就…...

Netgear路由器终极救援指南:用nmrpflash免费快速修复变砖设备

Netgear路由器终极救援指南&#xff1a;用nmrpflash免费快速修复变砖设备 【免费下载链接】nmrpflash Netgear Unbrick Utility 项目地址: https://gitcode.com/gh_mirrors/nmr/nmrpflash 当你的Netgear路由器在固件升级过程中意外断电&#xff0c;或者刷入错误固件导致…...

计算机科学第三难题:“树映射”问题在文件、写作、建筑、生物分类中无处不在!

计算机科学第三难题&#xff1a;将通用图映射到层次结构&#xff0c;“树映射”问题无处不在 根据一个归属于 菲尔卡尔顿 的 经典笑话&#xff0c;计算机科学只有两个难题&#xff1a;命名和缓存失效。这两个问题之所以难&#xff0c;是因为没有算法可以解决它们&#xff1a;好…...

NVIDIA Profile Inspector终极显卡优化工具:简单易用的性能调校完整指南

NVIDIA Profile Inspector终极显卡优化工具&#xff1a;简单易用的性能调校完整指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款专业的显卡优化工具&#xff0c;专为…...

抖音批量下载神器:5分钟学会免费高效下载视频、音乐和直播

抖音批量下载神器&#xff1a;5分钟学会免费高效下载视频、音乐和直播 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…...

Supabase AI Agent技能库:安全集成数据库操作与边缘函数调用

1. 项目概述&#xff1a;当Supabase遇上AI Agent&#xff0c;一个技能库的诞生最近在捣鼓AI Agent应用开发&#xff0c;发现一个挺有意思的现象&#xff1a;大家都能用LangChain、LlamaIndex这些框架快速搭出个Agent的架子&#xff0c;但真想让这个Agent去干点具体、有用的活儿…...

乌尔都语语音合成落地难?揭秘ElevenLabs未公开的ur-PK语言代码陷阱与ISO 639-3双标适配规范(仅限首批127家认证开发者知晓)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;乌尔都语语音合成落地难&#xff1f;揭秘ElevenLabs未公开的ur-PK语言代码陷阱与ISO 639-3双标适配规范&#xff08;仅限首批127家认证开发者知晓&#xff09; ElevenLabs 官方文档中仅标注 ur 为乌尔…...

CFD工程师必看:TVD格式选型指南——从SUPERBEE到UMIST,哪个才是你的菜?

CFD工程师必看&#xff1a;TVD格式选型实战指南——从工程场景到最优解 在计算流体力学(CFD)的世界里&#xff0c;TVD格式就像赛车手的轮胎选择——没有绝对的好坏&#xff0c;只有场景的适配。当你在汽车外气动分析中遇到激波振荡&#xff0c;或在燃烧模拟中面临虚假扩散时&am…...