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塊兒影響效率。
還是遞歸的思想!