Possible Duplicate:
how to read all files inside particular folder
I have the following code which I came up with:
string[] lines = System.IO.File.ReadAllLines(@"C:\Notes\Variables1.txt");
foreach (string line in lines开发者_JS百科)
{
process(line);
}
string[] lines = System.IO.File.ReadAllLines(@"C:\Notes\test1.txt");
foreach (string line in lines)
{
process(line);
}
Is there a simple and reliable way that I can modify the code so that it looks up all the .txt files in my Notes directory and then reads each one in turn. Some way I can code this up without having to specify each file in turn and something that won't crash if the file is empty.
string[] files = Directory.GetFiles(source, "*.txt");
foreach(string filename in files)
{
//go do something with the file
}
Use the DirectoryInfo
class to get a listing of all files.
Is has an overloaded EnumerateFiles
method, just for this.
You can get a collection of the files in any given directory using Directory.GetFiles(). Then just process them one by one like you were already doing.
string[] files = Directory.GetFiles(@"C:\Notes", "*.txt", SearchOption.TopDirectoryOnly);
foreach(string file in files)
{
string[] lines = File.ReadAllLines(file);
foreach (string line in lines)
{
process(line);
}
}
There's a lot more in the System.IO namespace.
Use System.IO.Directory.ReadFiles
For example:
string[] filePaths = Directory.GetFiles(@"c:\Notes\", "*.txt")
Then simply iterate through the file paths
You want:
Directory.GetFiles(path, "*.txt");
This will return an array of names so you can loop over each file in turn:
foreach (string file in Directory.GetFiles(path, "*.txt"))
{
string[] lines = System.IO.File.ReadAllLines(file);
foreach (string line in lines)
{
process(line);
}
}
string[] files = Directory.GetFiles(directory);
foreach(string filename in files)
{
if (Path.GetExtension(filename) != ".txt")
continue;
string[] lines = System.IO.File.ReadAllLines(filename);
foreach (string line in lines)
{
process(line);
}
}
精彩评论