using System;
using System.IO;
using System.Collections;
namespace DSclub
{
/**////
/// DirList 的摘要说明。
///
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块儿影响效率。
还是递归的思想!