我想知道是否有人能够帮助我,因为我对C#还很陌生。我有一个带文件夹的驱动器,带有全部包含文件的文件夹。有没有办法循环遍历这些文件并将所有这些文件名都收集到一个.txt文件中?递归获取具有多个子目录的目录中的文件
我不知道如何实现这个到我的控制台应用程序 - 所以有没有人可以帮助任何代码?
我想知道是否有人能够帮助我,因为我对C#还很陌生。我有一个带文件夹的驱动器,带有全部包含文件的文件夹。有没有办法循环遍历这些文件并将所有这些文件名都收集到一个.txt文件中?递归获取具有多个子目录的目录中的文件
我不知道如何实现这个到我的控制台应用程序 - 所以有没有人可以帮助任何代码?
现在我明白你想提示找到的每个文件的用户,你可能想沿着这些线路试一下:
class Program
{
static IEnumerable<String> Visitor(String root, String searchPattern)
{
foreach (var file in Directory.GetFiles(root, searchPattern, SearchOption.TopDirectoryOnly))
{
yield return file;
}
foreach (var folder in Directory.GetDirectories(root))
{
foreach (var file in Visitor(folder, searchPattern))
yield return file;
}
}
static void Main(string[] args)
{
foreach (var file in Visitor(args[0], args[1]))
{
Console.Write("Process {0}? (Y/N) ", file);
if (Console.ReadKey().Key == ConsoleKey.Y)
{
Console.WriteLine("{1}\tProcessing {0}...", file, Environment.NewLine);
}
else
{
Console.WriteLine();
}
}
}
}
这将走的目录结构,并且对于每场比赛,提示用户是否处理该文件。
File.WriteAllLines("yourfile.txt", Directory.GetFiles("path", "*.*", SearchOption.AllDirectories));
“C#编程指南”有一个article detailing both a recursive and an iterative approach来遍历目录树。
@Koen's answer通常更有用,但如果您需要更“异步”的方法,那么每次找到匹配文件时都要更新UI(或其他),该文章中的方法可能会有用。用另一种方法,你要么拥有所有的文件,要么你没有。
也许这样的事情?
var files = Directory.GetFiles("c:\\", "*.*", SearchOption.AllDirectories);
using (var sw = new StreamWriter("output.txt"))
{
files.ToList().ForEach(file => sw.WriteLine(file));
}
不要忘了使用System.IO
如果我用这个,我怎么可以把一个提示。例如...我想Console.Write(文件),以便运行此应用程序的用户可以看到文件名。然而,在我的应用程序继续做其他事情之前...我希望用户按Y或Y来继续。我该怎么做呢? – yeahumok 2010-06-09 17:51:14
我已经修改了我的答案以满足您的需求。 – 2010-06-10 14:13:33