2012-06-10 113 views
0

这就是我想做的事:如何从目录c#中读取所有文件?

  1. 选择一个目录
  2. 输入字符串
  3. 阅读从该目录中的所有文件中的字符串。

,我想实现的想法是这样的:

选择的目录,输入一个字符串。转到该文件夹​​中的每个文件。例如,该文件夹是:Directory={file1.txt,file2.txt,file3.txt}

我想先转到file1.txt,将所有文本读入字符串,然后查看我的字符串是否在该文件中。如果是:否则转到file2.txt,依此类推。

+15

有些SO用户会直接给你你需要的代码,但为了大家的利益,请阅读本网站:http://www.whathaveyoutried.com SO并不总是会给你你想要的直接答案,你也必须做一些工作。 – Arran

+0

感谢好友:) – icebox19

+1

这是一个很棒的链接,@Arran。 –

回答

11
foreach (string fileName in Directory.GetFiles("directoryName", "searchPattern") 
{ 
    string[] fileLines = File.ReadAllLines(fileName); 
    // Do something with the file content 
} 

您可以使用File.ReadAllBytes()File.ReadAllText()代替File.ReadAllLines()为好,它只是取决于您的要求。

+0

感谢您的答案:) – icebox19

+0

不客气... – eyossi

+0

我得到这个错误...错误1名称'文件'不存在于当前的上下文中,我应该添加一些东西? – icebox19

0

我想这是你想要的...

string input = "blah blah"; 
string file_content; 
FolderBrowserDialog fld = new FolderBrowserDialog(); 
if (fld.ShowDialog() == DialogResult.OK) 
{ 
    DirectoryInfo di = new DirectoryInfo(fld.SelectedPath); 
    foreach(string f in Directory.GetFiles(fld.SelectedPath)) 
    { 
     file_content = File.ReadAllText(f); 
     if (file_content.Contains(input)) 
     { 
      //string found 
      break; 
     } 
    } 
} 
+0

文件顶部的声明感谢哥们:) – icebox19

0

嗨最简单的方式来实现你问什么会是这样的:

string[] Files = System.IO.Directory.GetFiles("Directory_To_Look_In"); 

foreach (string sFile in Files) 
{ 
    string fileCont = System.IO.File.ReadAllText(sFile); 
    if (fileCont.Contains("WordToLookFor") == true) 
    { 
     //it found something 
    } 

} 
+0

谢谢,我得到这个错误...错误名称'文件'不存在于当前的情况下 – icebox19

+0

解决它:)... – icebox19

+0

不错,我还编辑了一些代码并做了一次测试编译。 :) – JaggenSWE

4
 var searchTerm = "SEARCH_TERM"; 
     var searchDirectory = new System.IO.DirectoryInfo(@"c:\Test\"); 

     var queryMatchingFiles = 
       from file in searchDirectory.GetFiles() 
       where file.Extension == ".txt" 
       let fileContent = System.IO.File.ReadAllText(file.FullName) 
       where fileContent.Contains(searchTerm) 
       select file.FullName; 

     foreach (var fileName in queryMatchingFiles) 
     { 
      // Do something 
      Console.WriteLine(fileName); 
     } 

这是基于LINQ的解决方案,它也应该解决您的问题。这可能会更容易理解并更易于维护。所以如果你能够使用LINQ试试看。