我有一个做我的头一个问题。C#如何通过文件系统重复和分配编号
我想通过在本地电脑的文件夹,包括目录遍历,并计算出一个编号系统对每个文件夹在文件系统层次结构中。
根文件夹应计算为1,2,3等
如果有三个子文件夹在文件夹中的一个计算的数应该是: 1.1,1.2,1.3
如果有如果在文件夹2(根文件夹)中存在三个子文件夹,则计算出的数字应该为: 1.1.1,1.1.2,1.1.3
如果文件夹2(根文件夹)中有三个子文件夹,数字应该是: 2.1,2.2,2.3
或者以另一种方式表达:
1 Root Folder
1.1 Root Sub Folder 1
1.1.1 Sub Folder
1.1.2 Sub Folder
1.2 Root Sub Folder 2
1.2.1 List item
1.2.2 List item
等等,等等
那么这个逻辑应该应用到所有文件夹和子文件夹。
输出例
1.1.1 | "c:\Root\Folder1\Folder1\"
我迄今似乎工作在某些情况下确定,但可以在其他情况下会失败:
private string rootpath = @"C:\FolderHierarchy\";
private string FolderSequenceCountBase = "";
private int CurrentRootPathCount = 0;
private int Counter = 0;
private void CalculateFolderHierarchyNumbers()
{
//Get First List of Folders
string[] Dirs = Directory.GetDirectories(rootpath, "*.*", SearchOption.TopDirectoryOnly);
for (int i = 0; i < Dirs.Count(); i++)
{
FolderSequenceCountBase = (i + 1).ToString();
CurrentRootPathCount = i + 1;
Console.WriteLine("Processed folder '{0}'.", Dirs[i] + " = " + (i + 1));
GetSubDirs(Dirs[i]);
}
}
private void GetSubDirs(string item)
{
//Get next list of folders in the folder hierarchy
string[] SubDirs = Directory.GetDirectories(item, "*.*", SearchOption.TopDirectoryOnly);
foreach (var DirPath in SubDirs)
{
//Increment count of folders within the current folder list
Counter += 1;
Console.WriteLine("Processed folder '{0}'.", DirPath + " = " + FolderSequenceCountBase + "." + Counter);
}
Counter = 0;
//Get next list of folders in the folder hierarchy
foreach (var DirPath in SubDirs)
{
FolderSequenceCountBase += ".1";
GetSubDirs(DirPath);
}
}
希望这是显而易见的。
感谢 里克
你的意思是你想提取出现在每个文件夹中的数字?您还应该显示您在解决问题时所做的任何以前的尝试 – Sayse 2014-09-23 07:31:29
目录或文件是否始终以数字结尾?如果没有? – 2014-09-23 07:37:36
我的理解是否正确,你知道如何去浏览目录......但是有麻烦把那个数字放在那里? (如果您还将用于追溯的代码发布到您的问题中,那将会很好)。 @TimSchmelter从我的理解Folder1,Folder2,...仅仅是examplenames,文件夹名称/文件名中的数字只是巧合,并且与他想要做的编号无关 – Thomas 2014-09-23 07:43:14