标题:怎么显示指定文件夹所有文件夹和文件,急!!
只看楼主
aubblove
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2007-8-18
 问题点数:0 回复次数:14 
怎么显示指定文件夹所有文件夹和文件,急!!

我想把指定E盘目录下FOX文件夹里包含的文件夹和文件都显示出来,下面的程序可以把所有的文件夹显示在treeView里,帮一下我,看还应该怎么写,才能把文件也显示出来。谢了

namespace 文件列表
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
if (!Directory.Exists("E:\\FOX"))
{
Directory.CreateDirectory("E:\\FOX");
}
PopulateTreeView();

}

private void Form1_Load(object sender, EventArgs e)
{
treeView1.ExpandAll();
}


private void GetDirectories(DirectoryInfo[] subDirs,
TreeNode nodeToAddTo)
{

TreeNode aNode;
DirectoryInfo[] subSubDirs;
foreach (DirectoryInfo subDir in subDirs)
{
aNode = new TreeNode(subDir.Name, 0, 0);
aNode.Tag = subDir;
subSubDirs = subDir.GetDirectories();
if (subSubDirs.Length != 0)
{
GetDirectories(subSubDirs, aNode);
}
nodeToAddTo.Nodes.Add(aNode);
}

//foreach (FileInfo f in info.GetFiles("*.*")) //查找文件
//{
// nodeToAddTo.Nodes.Add(info + f.ToString());
//}

}
private void PopulateTreeView()
{
TreeNode rootNode;
DirectoryInfo info = new DirectoryInfo(@"E:\EOX");

if (info.Exists)
{
rootNode = new TreeNode(info.Name);
rootNode.Tag = info;
GetDirectories(info.GetDirectories(), rootNode);

treeView1.Nodes.Add(rootNode);
}
}


}
}

搜索更多相关主题的帖子: 文件夹 FOX Directory public 
2007-10-17 09:34
crazymk
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-8-30
得分:0 

private void GetDirectories(DirectoryInfo info,
TreeNode nodeToAddTo)
{

TreeNode aNode;
//DirectoryInfo[] subSubDirs;
foreach (FileInfo f in info.GetFiles("*.*")) //查找文件
{
nodeToAddTo.Nodes.Add(info + f.ToString());
}
foreach (DirectoryInfo subDir in info.GetDirectories())
{
aNode = new TreeNode(subDir.Name, 0, 0);
aNode.Tag = subDir;
//subSubDirs = subDir.GetDirectories();
if (subSubDirs.Length != 0)
{
GetDirectories(subDir, aNode);
}
nodeToAddTo.Nodes.Add(aNode);
}
}
private void PopulateTreeView()
{
TreeNode rootNode;
DirectoryInfo info = new DirectoryInfo(@"E:\EOX");

if (info.Exists)
{
rootNode = new TreeNode(info.Name);
rootNode.Tag = info;
GetDirectories(info, rootNode);

treeView1.Nodes.Add(rootNode);
}
}
在你代碼基礎上改的。你試試吧。

[此贴子已经被作者于2007-10-17 10:31:07编辑过]


すばらしいコードを書き出すのは楽しい事です
2007-10-17 10:21
aubblove
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2007-8-18
得分:0 
运行不能通过。
//DirectoryInfo[] subSubDirs;
//subSubDirs = subDir.GetDirectories();
这两条语句如果注释的话, if (subSubDirs.Length != 0),这条语句中的subSubDirs 就显示没有定义,去掉注释后,GetDirectories(info, rootNode)这条语句出错。
提示错误如下:与“文件移动.Form1.GetDirectories(System.IO.DirectoryInfo[], System.Windows.Forms.TreeNode)”最匹配的重载方法具有一些无效参数


2007-10-17 10:45
crazymk
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-8-30
得分:0 
subSubDirs.Length != 0 換成subDir.GetDirectories().Length != 0

すばらしいコードを書き出すのは楽しい事です
2007-10-17 10:52
crazymk
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-8-30
得分:0 
我沒調試就試寫個思路,
在你的思路基礎上改變一下
第一:引數改變
private void GetDirectories(DirectoryInfo info,TreeNode nodeToAddTo)
第二:先添加文件的Nodes,然後添加文件夾的Nodes並且遞歸搜索子文件夾。
foreach (FileInfo f in info.GetFiles("*.*")) //查找文件
{
nodeToAddTo.Nodes.Add(info + f.ToString());
}

すばらしいコードを書き出すのは楽しい事です
2007-10-17 10:55
aubblove
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2007-8-18
得分:0 

引数改变后,foreach (DirectoryInfo subDir in info.GetDirectories()) 查询目录的参数是不是也要该
不知怎么了,我改这个地方那个地方就会出错,看来我的基本功太浅了,对了,我最上面那些程序在你那里可以运行吧,怎么添加了一些就会出错呢?

2007-10-17 11:15
crazymk
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-8-30
得分:0 
你的程序我沒有運行

你的遞歸思路已經很好了,就差這麼一點而已。

「提示错误如下:与“文件移动.Form1.GetDirectories(System.IO.DirectoryInfo[], System.Windows.Forms.TreeNode)”最匹配的重载方法具有一些无效参数 」
上面那個錯誤,你只要把主程序調用遞歸方法這裡的參數變一下就可以了。
GetDirectories(info, rootNode);


二樓黑體部分就是我對你的代碼的改動部分

[此贴子已经被作者于2007-10-17 11:26:19编辑过]


すばらしいコードを書き出すのは楽しい事です
2007-10-17 11:24
aubblove
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2007-8-18
得分:0 

在foreach(FileInfo f in info.GetFiles("*.*")) 上面出现异常,“当前线程处于堆栈溢出状态,因此无法计算表达式的值。”排错提示
确保没有无限循环或递归

2007-10-17 11:56
virusswb
Rank: 1
等 级:新手上路
威 望:1
帖 子:342
专家分:0
注 册:2005-8-6
得分:0 
你知道文件夹用directory,难道不知道文件用file吗,都在空间下面的

jorden008@
2007-10-17 13:37
crazymk
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-8-30
得分:0 

private void button1_MouseLeave(object sender, EventArgs e)
{

TreeNode rootNode;
DirectoryInfo info = new DirectoryInfo(@"F:\資料");

if (info.Exists)
{
rootNode = new TreeNode(info.Name);
rootNode.Tag = info;
GetDirectories(info, rootNode);

treeView1.Nodes.Add(rootNode);
}

}
private void GetDirectories(DirectoryInfo info,TreeNode nodeToAddTo)
{

TreeNode aNode;

foreach (FileInfo f in info.GetFiles("*.*")) //查找文件
{
nodeToAddTo.Nodes.Add(info + f.ToString());
}
foreach (DirectoryInfo subDir in info.GetDirectories())
{
aNode = new TreeNode(subDir.Name, 0, 0);
aNode.Tag = subDir;

if (subDir.GetDirectories().Length != 0)
{
GetDirectories(subDir, aNode);
}
nodeToAddTo.Nodes.Add(aNode);
}
}
和二樓的代碼就改了黑體部分我就運行過去了。你又改什麼了



すばらしいコードを書き出すのは楽しい事です
2007-10-17 13:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-178295-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.431106 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved