我想知道是否有人能夠幫助我,因爲我對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