using System;
using System.IO;
using System.Collections;

namespace DSclub
{
    
/// <summary>
    
/// DirList 的摘要说明。
    
/// </summary>

    public class DirList
    
{
        
private string strInitFilePath;
        
private bool bFatchAll;

        
// 构造函数
        public DirList()
        
{
            bFatchAll 
= false;
            strInitFilePath 
= "C:\\";
        }

        
public DirList(string strFilePath)
        
{
            bFatchAll 
= false;
            strInitFilePath 
= strFilePath;
        }


        
// 是否递归出所有的文件
        public bool RecursionFiles
        
{
            
get
            
{
                
return bFatchAll;
            }

            
set
            
{
                bFatchAll 
= value;
            }

        }


        
// 取得文件的函数
        public ArrayList GetFiles()
        
{
            
return GetFiles(strInitFilePath, bFatchAll);
        }


        
public static ArrayList GetFiles(string strPath, bool ResultsAll)
        
{
            ArrayList al  
= new ArrayList();
            
// 判断路径是否存在
            if(!Directory.Exists(strPath))
            
{
                
throw(new ApplicationException("访问的路径" + strPath + "不存在,或者它不是个文件夹。"));
            }


            
string[] temp =  Directory.GetFiles(strPath);
            
foreach(string aFile in temp)
            
{
                al.Add(aFile);
            }


            
// 如果此目录下不存在文件,则把文件夹路径返回,并用///作标识
            if(temp.Length == 0)
            
{
                al.Add(
"///" + strPath);
            }


            
if(ResultsAll)
            
{
                temp 
= Directory.GetDirectories(strPath);
                
foreach(string aDir in temp)
                
{
                    al.AddRange(GetFiles(aDir, ResultsAll));
                }

            }

            
            
return al;
        }


    }

}


其中关于应该有系统文件的检查,还有用户不可访问系统文件夹的判断,但是这个项目中用不上,又不想用Try块儿影响效率。

还是递归的思想!
posted on 2005-05-17 15:32  雪美·考拉  阅读(936)  评论(0编辑  收藏  举报