[英]Searching through a file structure to count items in a subfolder
我在尝试通过搜索文件结构来创建列表时遇到问题。 试图制作一个基本的c#控制台程序,只运行并执行此操作。
我的结构如下组织。
我的网络 \\
X1 \\ Users \\(许多用户文件夹)\\搜索特定子文件夹\\在该子文件夹中的任何文件夹的文本文件中创建列表
所以我必须能够搜索每个用户文件夹,然后检查一个文件夹(每次都是相同的)然后使用以下格式列出该子文件夹中找到的文件夹的列表
用户名(用户文件夹的名称)>>特定文件夹中的文件夹名称。
这是一段非常漫长的时间,因为我不得不尝试在文件结构中搜索任何东西,因此在这方面空白。
** * ** * ** * ** * ****编辑!!!!!
感谢您的信息和链接。 现在正在努力,但想知道这是否有意义并且可行。 在我确定它看起来像不会搞砸的东西之前,不要只是测试它。
TextWriter outputText = new StreamWriter(@"C:\FileList.txt", true);
outputText.WriteLine("Starting scan through user folder");
string path = @"\\X1\users";
string subFolder = "^^ DO NOT USE - MY DOCS - BACKUP ^^";
string [] user_folders = Directory.GetDirectories(path);
foreach (var folder in user_folders)
{
string checkDirectory = folder + "\\" + subFolder;
if (Directory.Exists(checkDirectory) == true)
{
string [] inner_folders = Directory.GetDirectories(checkDirectory);
foreach (var folder2 in inner_folders)
{
outputText.WriteLine(folder2);
}
}
}
outputText.WriteLine("Finishing scan through user folder");
outputText.Close();
固定和工作!!!! 不得不改变字符串[]行,使其成为.GetDirectories而不是.GetFiles !!
正如Bali C所提到的,Directory类将成为你的朋友。 以下示例可以帮助您入门。
来自: http : //social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/3ea19b83-b831-4f30-9377-bc1588b94d23/
//Obviously you'll need to define the correct path.
string path = @"My Network\X1\Users\(many many user folders)\Search for a specific sub folder \";
// Will Retrieve count of all files in directry and sub directries
int fileCount = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Length;
// Will Retrieve count of all files in directry but not sub directries
int fileCount = Directory.GetFiles(path, "*.*", SearchOption.TopDirectory).Length;
// Will Retrieve count of files .txt extensions in directry and sub directries
int fileCount = Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories).Length;
如果您需要在/ Users /文件夹中搜索某些人或某些条件,您可以执行以下操作:
string path = @"PATH_TO_USERS_DIRECTORY";
string [] user_folders = Directory.GetFiles(path);
foreach(var folder in user_folders)
{
if folder == "MyFolder";
Process(folder); //Search the directory here.
}
尝试以下实现。 这只会写入控制台:
const string root = "<<your root path>>";
const string directoryToLookFor = "<<the folder name you are looking for>>";
foreach (var directory in Directory.EnumerateDirectories(root, "*.*", SearchOption.TopDirectoryOnly))
{
var foundDirectory = Directory.EnumerateDirectories(directory, directoryToLookFor, SearchOption.TopDirectoryOnly).FirstOrDefault();
if (!String.IsNullOrEmpty(foundDirectory))
{
var filesInside = Directory.GetFiles(foundDirectory);
foreach (var file in filesInside)
{
Console.WriteLine(file);
}
}
}
或者你可以这样做:
foreach (var foundDirectory in Directory.EnumerateDirectories(root, directoryToLookFor, SearchOption.AllDirectories))
{
var filesInside = Directory.GetFiles(foundDirectory);
foreach (var file in filesInside)
{
Console.WriteLine(file);
}
}
哪个会在所有子目录中搜索而无需迭代用户的文件夹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.