我在服务器上做了完整的文件夹列表,但是大约有65,000个StackOverFlowException共享,有一个例外。如何到处走走
static List<string> FolderList = new List<string>();
static void Selection(DirectoryInfo dir)
{
FolderList.Add(dir.FullName);
foreach (var a_dir in dir.GetDirectories())
{
Selection(a_dir);
}
}
答案 0 :(得分:1)
当您具有未知深度时,使用递归不是一个好习惯。或者,您可以使用GetDirectories的重载(它使用Stack数据结构而不是递归):
<script src="~/scripts/custombox.js"></script>
<link href="~/css/custombox.css" rel="stylesheet" />
<script type="text/javascript">
$(function () {
$(".btnModal").click(function () {
$("#modalBody").load($(this).attr("data-href"));
Custombox.open({
target: '#myModal',
zIndex: 'auto'
});
});
});
</script>
<a class="btnModal btn btn-primary" href="javascript:;" data-href="@Url.Action("Create")">New</a>
<div id="myModal" style="width:200px;height:200px;background-color:#fff;">
<div id="modalBody">
</div>
</div>
如果您仍然遇到异常,则需要将逻辑更改为传统的while循环。
以下static List<string> FolderList = new List<string>();
static void Selection(DirectoryInfo dir)
{
var dirs = dir.GetDirectories("*", SearchOption.AllDirectories);
foreach (var a_dir in dirs)
{
FolderList.Add(dir.FullName);
}
}
的文档:
是searchPattern:
要匹配的名称的搜索字符串 目录。此参数可以包含有效文字的组合 路径和通配符(*和?)字符(请参阅备注),但不是 支持正则表达式。默认模式为&#34; *&#34;,返回 所有文件。
searchOption:
一个枚举值,指定搜索操作是否>应该只包括当前目录或所有子目录