我正在尝试检索目录中所有文件夹中的所有文件。
但结果很随机......
我认为foreach错了..
我不明白为什么?
因为在所有文件夹中,我们检查所有文件,然后显示所有文件的链接按钮。但实际上它显示了很多文件夹,两次。
var DI = new DirectoryInfo("C://inetpub//wwwroot//ClientPortal//Files//")
.GetDirectories("*.*", System.IO.SearchOption.AllDirectories);
foreach (System.IO.DirectoryInfo D1 in DI)
{
System.IO.FileInfo[] fiArr = D1.GetFiles();
foreach (System.IO.FileInfo file in fiArr)
{
LinkButton lktest = new LinkButton();
lktest.Text = D1.Name;
form1.Controls.Add(lktest);
form1.Controls.Add(new LiteralControl("<br>"));
}
}
有人能帮助我吗?
非常感谢!
答案 0 :(得分:5)
显示所有文件的链接按钮
这里你创建的链接按钮的名称设置为目录,当它听起来像你想要的文件(即file.Name而不是D1.Name)
lktest.Text = D1.Name;
答案 1 :(得分:2)
这有帮助吗?
http://www.dreamincode.net/code/snippet1669.htm
public void GetDirStructure(string path)
{
try
{
DirectoryInfo dir = new DirectoryInfo(path);
DirectoryInfo[] subDirs = dir.GetDirectories();
FileInfo[] files = dir.GetFiles();
foreach(FileInfo fi in files)
{
Console.WriteLine(fi.FullName.ToString());
}
if (subDirs != null)
{
foreach (DirectoryInfo sd in subDirs)
{
GetDirStructure(path + @"\\" + sd.Name);
}
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
}
答案 2 :(得分:1)
第一行代码似乎是罪魁祸首:
System.IO.DirectoryInfo[] DI = new System.IO.DirectoryInfo("C://inetpub//wwwroot//ClientPortal//Files//").GetDirectories("*.*", System.IO.SearchOption.AllDirectories);
尝试使用以下内容:
DirectoryInfo[] DI = new DirectoryInfo("C://inetpub//wwwroot//ClientPortal//File//").GetDirectories();