C#根据字搜索文件夹下的所有包含具有关键字的文件和行号代码
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Collections;
namespace ConsoleApplication1
{
cla Program
{
static FileStream outfilestream = null;
static StreamWriter outwriter = null;
static string keyword = null;//请输入关键字
static void Main(string[] args)
{
outfilestream = new FileStream(\"G:\\\\res\\\\res.txt\", FileAcce.Write);
outwriter = new StreamWriter(outfilestream,Encoding.Default);Console.WriteLine(\"请输入搜索目录:\");
string searchFolder = Console.ReadLine();
Console.WriteLine(\"请输入复制的目标目录:\");
string toFolder = Console.ReadLine();
Console.WriteLine(\"请输入复制的文件类型:\");
string fileType = Console.ReadLine();
Console.WriteLine(\"请输入关键字\");
keyword = Console.ReadLine();
CopyAllFiles(searchFolder, toFolder, fileType);
outwriter.Close();
Console.WriteLine(\"运算结束\");
Console.Read();
}
static void CopyAllFiles(string fpath, string tpath, string filetype){
if (Directory.Exists(fpath))
{
foreach (string f in Directory.GetFiles(fpath, \"*\"+filetype)){
FileStream fileStream = null;
StreamReader streamReader = null;
string filename = Path.GetFileName(f);
int tag = 0; FileMode.Open,
int line = 1;
try
{
fileStream = new FileStream(f, FileMode.Open, FileAcce.Read);streamReader = new StreamReader(fileStream, Encoding.Default);// StreamWriter streamWtiter = new StreamWriter(fileStream, Encoding.Default);
fileStream.Seek(0, SeekOrigin.Begin);
string content = streamReader.ReadLine();
while (content != null)
{
if (content.Contains(keyword))
{
//Console.WriteLine(\"行号{0}:{1}\",line,content);outwriter.WriteLine(\"行号{0}:{1}\", line, content);tag = 1;
}
line++;
content = streamReader.ReadLine();
}
if (tag == 1)
{
//Console.WriteLine(\"{0},{1}\", f, filename);
outwriter.WriteLine(\"{0},{1}\", f, filename);
outwriter.WriteLine();
}
filename.Clone();
streamReader.Close();
}
catch (FieldAcceException)
{
}
catch (FileNotFoundException)
{
}
catch (MiingFieldException)
{
}
// File.Copy(f, Path.Combine(tpath, filename), true);
}
foreach (string f in Directory.GetDirectories(fpath))
{
CopyAllFiles(f, tpath, filetype);
}}}}
}