List<string> result = new List<string>(); foreach (string file in Directory.GetFiles(@"C:\")) { using (StreamReader sr = new StreamReader()) { if (sr.ReadToEnd().IndexOf("search string") > 0) result.Add(file); } }
List<string> result = new List<string>(); foreach (string file in Directory.GetFiles(@"C:\")) { using (StreamReader sr = new StreamReader(file )) { if (sr.ReadToEnd().IndexOf("search string") > 0) result.Add(file); } } 我代码写漏了,你不会能编译过吧? sr.ReadToEnd()会把文件内容都读入内存,所以对于比较大的文件会有问题,比如大于10M的。 对于这种文件,你可以一行一行读。
List<string> result = new List<string>(); foreach (string file in Directory.GetFiles(@"C:\", "*.*", SearchOption.TopDirectoryOnly)) { try { using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read)) { using (StreamReader sr = new StreamReader(fs)) { if (sr.ReadToEnd().IndexOf("search string") > 0) result.Add(file); } } } catch { } }
List<string> result = new List<string>();
foreach (string file in Directory.GetFiles(@"C:\"))
{
using (StreamReader sr = new StreamReader())
{
if (sr.ReadToEnd().IndexOf("search string") > 0)
result.Add(file);
}
}
foreach (string file in Directory.GetFiles(@"C:\"))
{
using (StreamReader sr = new StreamReader(file ))
{
if (sr.ReadToEnd().IndexOf("search string") > 0)
result.Add(file);
}
}
我代码写漏了,你不会能编译过吧?
sr.ReadToEnd()会把文件内容都读入内存,所以对于比较大的文件会有问题,比如大于10M的。
对于这种文件,你可以一行一行读。
List<string> result = new List<string>();
foreach (string file in Directory.GetFiles(@"C:\", "*.*", SearchOption.TopDirectoryOnly))
{
try
{
using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
{
using (StreamReader sr = new StreamReader(fs))
{
if (sr.ReadToEnd().IndexOf("search string") > 0)
result.Add(file);
}
}
}
catch
{
}
}
是的话从我博客留言,给你代码
word文档貌似是用Unicode编码的,所以这样打开就可以读里面的东西了。