【发布时间】:2021-03-26 01:05:29
【问题描述】:
正如标题所说,我正在寻找一种方法来打印树中的所有目录和文件。我有一棵这样的树:
C:/
├── Program Files/
│ └── Word
└── Program Files (x64)/
├── Chrome
└── Ink
我的代码经过一个分支,我无法返回进入新文件夹。例如,我可以在 Chrome 中进行计数,但由于我的代码结束了迭代,我无法返回查看 Ink 内部。这里是:
private void countFiles(string directoryPath, string VmVsphereName, string restorePointID)
{
//Verifica autorizzazione sui dati
Guid oidVm;
using (TSCLOUDEntities context = new TSCLOUDEntities())
{
oidVm = (
from vm in context.VM10_MACCHINE_VIRTUALI
where vm.VM10_VSPHERE_NAME == VmVsphereName
select vm.VM10_OID
).Concat(
from vm in context.NCL10_VIRTUAL_MACHINE
where vm.NCL10_VSPHERE_NAME == VmVsphereName
select vm.NCL10_OID
).Single();
}
TipoPiattaformaCloud tipoPiattaformaCloud = Bll_VirtualMachines.GetCloudPlatfomOfVm(oidVm);
VeeamCredential veeamCredential = Code.Config.Instance.GetVeeamCredential(tipoPiattaformaCloud);
string veeamResponseHeader = GetVeeamResponseHeader();
string veeamSessionId = GetVeeamSessionId();
VeeamClient veeamClient = new VeeamClient(veeamCredential, veeamResponseHeader, veeamSessionId);
if (href == "")
{
fileSystemEntries = CatalogUtility.GetFileSystemEntries(veeamClient, VmVsphereName, restorePointID, directoryPath);
files += Directory.GetFiles(directoryPath, "*.*", SearchOption.AllDirectories).Count();
directories += Directory.GetDirectories(directoryPath, "*.*", SearchOption.AllDirectories).Count();
} else
{
fileSystemEntries = CatalogUtility.GetFileSystemEntriesByHref(veeamClient, href);
files += Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Count();
directories += Directory.GetDirectories(path, "*.*", SearchOption.AllDirectories).Count();
}
for (int i = 0; i < fileSystemEntries.Directories.Count(); i++)
{
try
{
path = fileSystemEntries.Directories[i].Path;
href = fileSystemEntries.Directories[i].Href;
var stepInside = CatalogUtility.GetFileSystemEntriesByHref(veeamClient, href);
directories += stepInside.Directories.Count();
files += stepInside.Files.Count();
if (stepInside.Files.Count() != 0)
{
foreach (var file in stepInside.Files)
{
space += file.Size;
}
}
if (stepInside.Directories.Count() > 0)
{
countFiles(path, VmVsphereName, restorePointID);
}
} catch (UnauthorizedAccessException ex)
{
continue;
//Do nothing
}
catch (Exception ex)
{
log.Error(ex);
}
directories += fileSystemEntries.Directories.Count();
files += fileSystemEntries.Files.Count();
count += 1;
}
}
希望我很清楚。谢谢大家
【问题讨论】:
-
我很困惑,您是否正在寻找 java 或 c# 的答案?
-
对不起@DevlinPaddock。它适用于 C#。谢谢你的问题。我会编辑它!
标签: c# binary-tree