查询某个目录下所有的文件,以及文件夹,分类显示.比如遇到,文件夹,要继续显示当前文件夹内所有的内容,
如此循环,生成的结果 分类
如此循环,生成的结果 分类
解决方案 »
- dev GridControl控件的checkbox能设置成一次只能勾选一行数据么
- winform 如何实现弹出新窗体不能让父窗体失去焦点
- 怎样将WEB电子地图嵌入到C#编写的windows应用程序中???
- 數字大寫轉小寫
- 思归,能进来一下吗,我这问题挺长时间没解决了。。
- 请问在.NET Framework精简版下如何得到窗体句柄
- 真恼火,vs2005怎么又出问题了。。
- [强烈求助]动态生成控件后取它的值,怎么取到的不是最新的值?求教,谢谢
- 有没有办法将.net framework和mdac打到安装包中
- 求助~
- 谁能把MSDN里面的类库提取出来,做个JDK文档的东西.
- 奇怪的问题:C#程序中调用webService,在debug版本中没有任何问题,编译成release版本则出现XML 文档(1, 352)中有错误
{
Console.WriteLine(fi.Name);
}
//我把ArrayList当成动态数组用,非常好用
public void GetAllDirList(string strBaseDir)
{
DirectoryInfo di=new DirectoryInfo(strBaseDir);
DirectoryInfo[] diA=di.GetDirectories();
for(int i=0;i<diA.Length;i++)
{
al.Add(diA[i].FullName);
//diA[i].FullName是某个子目录的绝对地址,把它记录在ArrayList中
GetAllDirList(diA[i].FullName);
//注意:递归了。逻辑思维正常的人应该能反应过来
}
}最后,如何把所有目录信息从ArrayList中取出来呢?如下:
for(int i=0;i<al.Count;i++)
{
textBox1.AppendText(al[i].ToString()+" ");
//textBox1是容器,拷贝我的代码,注意要换一个你自己的容器
}
public System.Windows.Forms.TreeNode FindAll(总文件夹 根文件夹,TreeNode Result)
{
Result.Nodes.Add(new System.Windows.Forms.TreeNode(根文件夹.Name));
foreach(文件夹 文件夹1 in 根文件夹)
{
if(文件夹1.有文件夹)
{
this.FindAll(文件夹1);
}
else
{
foreach(文件 文1 in 文件夹1)
{
Result.Nodes.Add(new System.Windows.Forms.TreeNode(文1.Name));
}
}
}
}没有测试,应该就是这个逻辑吧
{
Result.Nodes.Add(new System.Windows.Forms.TreeNode(根文件夹.Name));
foreach(文件夹 文件夹1 in 根文件夹)
{
if(文件夹1.有文件夹)
{
this.FindAll(文件夹1,Result);
}
else
{
foreach(文件 文1 in 文件夹1)
{
Result.Nodes.Add(new System.Windows.Forms.TreeNode(文1.Name));
}
}
}
}
static void Main(string[] args) {
FileList(@"c:\");
} public static void FileList(string FilePath) {
foreach (FileSystemInfo var in new System.IO.DirectoryInfo(FilePath).GetFileSystemInfos()) {
if (var is DirectoryInfo) {
Console.WriteLine("文件夹---------------------------------------" + var.Name);
FileList(var.FullName);
} else
Console.WriteLine("文件\t" + var.Name);
}
}
}
问题的关键是,怎么分类文件是哪个文件夹下的
{
try
{
DirectoryInfo dir=new DirectoryInfo(GetPathFromNode(node)); DirectoryInfo [] e=dir.GetDirectories();
for(int i=0;i<e.Length;i++)
{
string name=e[i].Name;
if(!name.Equals(".")&&!name.Equals("..")) //判断一下
{
node.Nodes.Add(new TreeNode(name)); //再add
}
}
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}
private string GetPathFromNode(TreeNode node) //递归 产生节点路径 返string
{
if(node.Parent==null)
return node.Text;
return Path.Combine(GetPathFromNode(node.Parent),node.Text); //递归
}
效果
{
string path = "E:\\hehe";
string filter = "*.*";
ParseDirectory ( path, filter ); for ( int i = 0; i < m_paths.Count; i++ )
{
string filePath = ( string ) m_paths [ i ];
Response.Write ( filePath );
Response.Write ( "<br>" );
}
}
protected void ParseDirectory ( string path, string filter )
{
string[] dirs = Directory.GetDirectories ( path );
IEnumerator itorDirs = dirs.GetEnumerator ();
while( itorDirs.MoveNext () )
{
string strDir = (string)itorDirs.Current;
ParseDirectory ( strDir, filter );
} string[] files = Directory.GetFiles ( path, filter );
if ( files.Length > 0 )
{
m_numFiles += files.Length;
IEnumerator itorFiles = files.GetEnumerator ();
while ( itorFiles.MoveNext () )
{
string strFile = ( string ) itorFiles.Current;
m_paths.Add( strFile );
}
}
}
protected int m_numFiles = 0;
protected ArrayList m_paths = new ArrayList ();