这就是我想做的事:如何从目录c#中读取所有文件?
- 选择一个目录
- 输入字符串
- 阅读从该目录中的所有文件中的字符串。
,我想实现的想法是这样的:
选择的目录,输入一个字符串。转到该文件夹中的每个文件。例如,该文件夹是:Directory={file1.txt,file2.txt,file3.txt}
我想先转到file1.txt,将所有文本读入字符串,然后查看我的字符串是否在该文件中。如果是:否则转到file2.txt,依此类推。
这就是我想做的事:如何从目录c#中读取所有文件?
,我想实现的想法是这样的:
选择的目录,输入一个字符串。转到该文件夹中的每个文件。例如,该文件夹是:Directory={file1.txt,file2.txt,file3.txt}
我想先转到file1.txt,将所有文本读入字符串,然后查看我的字符串是否在该文件中。如果是:否则转到file2.txt,依此类推。
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()
为好,它只是取决于您的要求。
我想这是你想要的...
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;
}
}
}
文件顶部的声明感谢哥们:) – icebox19
嗨最简单的方式来实现你问什么会是这样的:
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
}
}
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试试看。
有些SO用户会直接给你你需要的代码,但为了大家的利益,请阅读本网站:http://www.whathaveyoutried.com SO并不总是会给你你想要的直接答案,你也必须做一些工作。 – Arran
感谢好友:) – icebox19
这是一个很棒的链接,@Arran。 –