这适用于任何试图获取文件夹及其子文件夹中所有文件的列表并将其保存在文本文档中的人。下面是完整的代码,包括“使用”语句、“命名空间”、“类”、“方法”等。我尝试在整个代码中尽可能多地进行注释,以便您了解每个部分的作用。这将创建一个文本文档,其中包含任何给定根文件夹的所有文件夹和子文件夹中的所有文件的列表。毕竟,如果你不能用它做点什么,那么一个列表(比如在 Console.WriteLine 中)有什么好处。在这里,我在 C 盘上创建了一个名为“Folder1”的文件夹,并在其中创建了一个名为“Folder2”的文件夹。接下来,我在文件夹 2 中填充了一堆文件、文件夹以及这些文件夹中的文件和文件夹。此示例代码将获取所有文件并在文本文档中创建一个列表并将该文本文档放在 Folder1 中。注意:您不应该将文本文档保存到 Folder2(您正在读取的文件夹),这只是一种不好的做法。始终将其保存到另一个文件夹。
我希望这可以帮助某人。
using System;
using System.IO;
namespace ConsoleApplication4
{
class Program
{
public static void Main(string[] args)
{
// Create a header for your text file
string[] HeaderA = { "****** List of Files ******" };
System.IO.File.WriteAllLines(@"c:\Folder1\ListOfFiles.txt", HeaderA);
// Get all files from a folder and all its sub-folders. Here we are getting all files in the folder
// named "Folder2" that is in "Folder1" on the C: drive. Notice the use of the 'forward and back slash'.
string[] arrayA = Directory.GetFiles(@"c:\Folder1/Folder2", "*.*", SearchOption.AllDirectories);
{
//Now that we have a list of files, write them to a text file.
WriteAllLines(@"c:\Folder1\ListOfFiles.txt", arrayA);
}
// Now, append the header and list to the text file.
using (System.IO.StreamWriter file =
new System.IO.StreamWriter(@"c:\Folder1\ListOfFiles.txt"))
{
// First - call the header
foreach (string line in HeaderA)
{
file.WriteLine(line);
}
file.WriteLine(); // This line just puts a blank space between the header and list of files.
// Now, call teh list of files.
foreach (string name in arrayA)
{
file.WriteLine(name);
}
}
}
// These are just the "throw new exception" calls that are needed when converting the array's to strings.
// This one is for the Header.
private static void WriteAllLines(string v, string file)
{
//throw new NotImplementedException();
}
// And this one is for the list of files.
private static void WriteAllLines(string v, string[] arrayA)
{
//throw new NotImplementedException();
}
}
}