C#搜索文字在文件及文件夹中出现位置的方法

本文实例讲述了C#搜索文字在文件及文件夹中出现位置的方法。分享给大家供大家参考。具体如下:

在linux中查询文字在文件中出现的位置,或者在一个文件夹中出现的位置,用命令:

代码如下:

grep -n '需要查询的文字' *

就可以了。今天做了一个C#程序,专门用来找出一个指定字符串在文件中的位置,与一个指定字符串在一个文件夹中所有的出现位置。

一、程序代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Search
{
 class Program
 {
 static void Main(string[] args)
 {
  if (args.Length != 3 || (args[0] != "file" && args[0] != "folder"))
  {
  Console.WriteLine("Correct Order Style: ");
  Console.WriteLine("Search file/folder address word");
  }
  switch (args[0])
  {
  case "file": //从文件中查找
   {
   if (System.IO.File.Exists(args[1]))
   {
    FindInFile(args[1], args[2]);
   }
   else
   {
    Console.WriteLine(string.Format(
    "File {0} not exist!", args[1]));
   }
   }
   break;
  case "folder": //从文件夹中查找(包括其中全部文件)
   {
   if (System.IO.Directory.Exists(args[1]))
   {
    FindInDirectory(args[1], args[2]);
   }
   else
   {
    Console.WriteLine(string.Format(
    "Directory {0} not exist!", args[1]));
   }
   }
   break;
  default: break;
  }
  Console.WriteLine("Output Finished.");
  Console.ReadLine();
 }
 /// <summary>
 /// 从文件中找关键字
 /// </summary>
 /// <param name="filename"></param>
 /// <param name="word"></param>
 public static void FindInFile(string filename, string word)
 {
  System.IO.StreamReader sr = System.IO.File.OpenText(filename);
  string s = sr.ReadToEnd();
  sr.Close();
  string[] temp = s.Split('\n');
  for (int i = 0; i < temp.Length; i++)
  {
  if (temp[i].IndexOf(word) != -1)
  {
   Console.WriteLine(string.Format(
   "Found in: {0}\n{1}\nLine: {2} \n",
   filename, temp[i].Trim(), i + 1));
  }
  }
 }
 /// <summary>
 /// 从文件夹中找关键字
 /// </summary>
 /// <param name="foldername"></param>
 /// <param name="word"></param>
 public static void FindInDirectory(string foldername, string word)
 {
  System.IO.DirectoryInfo dif = new System.IO.DirectoryInfo(foldername);
  //遍历文件夹中的各子文件夹
  foreach (System.IO.DirectoryInfo di in dif.GetDirectories())
  {
  FindInDirectory(di.FullName, word);
  }
  //查询文件夹中的各个文件
  foreach (System.IO.FileInfo f in dif.GetFiles())
  {
  FindInFile(f.FullName, word);
  }
 }
 }
}

二、运行示例

查找文件 E:\TestProgram\Search\Search\Program.cs 中所有的 Console
在程序Search.exe所在目录下,输入命令:Search file/folder 地址 要查找的字符串

三、关于VS测试带有输入参数的程序

在项目属性→调试选项卡→启动选项→命令行参数,把参数输入进去就可以了

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#执行DOS命令的方法

    本文实例讲述了C#执行DOS命令的方法.分享给大家供大家参考.具体实现方法如下: 在c#程序中,有时会用到调用cmd命令完成一些功能,本文介绍的如下方法,可实现c#执行DOS命令,并返回结果的功能. 复制代码 代码如下: //dosCommand Dos命令语句  public string Execute(string dosCommand)  {      return Execute(dosCommand, 10);  }  /// <summary>  /// 执行DOS命令,返回DO

  • C#调用CMD命令实例

    有时候有一些DOS命令需要我们在执行程序的时候调用,这需要使用C#提供的相关接口. 代码如下,很简单,相信大家都能看懂,我就不赘述了. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Diagnostics;//这个是进行dos命令调用 namespace ExecuteCMD { //实

  • C# 设计模式系列教程-命令模式

    1. 概述 将一个请求封装为一个对象(即我们创建的Command对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作. 2. 解决的问题 在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录.撤销或重做.事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适. 3. 模式中角色 3.1 抽象命令(Command):定义命令的接口,声明执行的方法. 3.2 具体命令(ConcreteCommand):具体命令,实

  • C#隐式运行CMD命令(隐藏命令窗口)

    本文实现了C#隐式运行CMD命令的功能.下图是实例程序的主画面.在命令文本框输入DOS命令,点击"Run"按钮,在下面的文本框中输出运行结果. 下面是程序的完整代码.本程序没有使用p.StandardOutput.ReadtoEnd()和p.StandardOutput.ReadLine()方法来获得输出,因为这些方法执行后画面容易卡死.而是通过调用异步方法BeginOutputReadLine来获取输出,并在事件p.OutputDataReceived的事件处理方法中来处理结果. u

  • C#从命令行读取参数的方法

    本文实例讲述了C#从命令行读取参数的方法.分享给大家供大家参考.具体如下: using System; class MainClass { public static void Main(string[] args) { foreach (string arg in args) Console.WriteLine("Arg: {0}", arg); } } 将上面的代码保存为:readfile.cs,编辑源文件: csc readfile.cs 执行命令: readfile.exe j

  • C#使用dir命令实现文件搜索功能示例

    本文实例讲述了C#使用dir命令实现文件搜索功能.分享给大家供大家参考,具体如下: 以往,我都是使用 System.IO.Directory.GetDirectories() 和 System.IO.Directory.GetFiles() 方法遍历目录搜索文件.但实际的执行效果始终差强人意,在检索多种类型文件方面不够强大,尤其是在检索特殊文件夹或遇到权限不足时会引发程序异常. 这次为朋友写了个检索图片的小程序,在仔细研究了 Process 以及 ProcessStartInfo 之后,决定利用

  • C#执行外部命令的方法

    本文实例讲述了C#执行外部命令的方法.分享给大家供大家参考.具体实现方法如下: ///<summary> ///executes a system command from inside csharp ///</summary> ///<param name="cmd">a dos type command like "isql ..."</param> ///<param name ="millsec

  • c# 可疑文件扫描代码(找到木马)(简)

    复制代码 代码如下: using System; using System.IO; using System.Text.RegularExpressions; using System.Threading; using System.Windows.Forms; using System.Net; namespace TrojanScanning { public partial class Form1 : Form { public Form1() { InitializeComponent(

  • c#执行外部命令示例分享

    复制代码 代码如下: String Command = @"python test.py";String Output = Execute.run(Command);Console.WriteLine(Output); 复制代码 代码如下: using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;using System.Text

  • C#访问命令行的两种方法

    本文实例讲述了C#访问命令行的两种方法.分享给大家供大家参考.具体如下: 方法1: // 参数:A B C using System; public class CommandLine { public static void Main(string[] args) { // Length 属性用于获取数组的长度. // 注意,Length 是只读属性: Console.WriteLine("Number of command line parameters = {0}", args.

随机推荐