我有一個做我的頭一個問題。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