using System;
using System.Collections;
using System.Windows.Forms;namespace UpdateServer
{
/// <summary>
/// ClassDirectory 
/// </summary>
public class ClassDirectory
{
private ArrayList m_AFile  = new ArrayList();
private ArrayList m_ADirectory = new ArrayList();
private DateTime m_DTModify  = new DateTime();
private string m_strDirectory = "";
private string m_strName = "";
public ClassDirectory()
{
//
// TODO: 
//
} public void SetDirectory(string strDirectory)
{
m_strDirectory = strDirectory;
m_strName = GetDirectoryOrFileName(m_strDirectory);
m_AFile.Clear();
m_ADirectory.Clear(); System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(m_strDirectory);
m_DTModify = dirInfo.LastWriteTime;
} public string GetName()
{
return m_strName;
} private string  GetDirectoryOrFileName(string strPath)
{ //return strPath.Substring(0, strPath.IndexOf("\\"));
return strPath.Substring(strPath.LastIndexOf("\\") + 1, strPath.Length - strPath.LastIndexOf("\\") - 1);
} public string GetDirectory()
{
return m_strDirectory;
} public TreeNode FillStuctTreeNode()
{
if(m_strDirectory.Length <= 0)
return null; TreeNode newNode = new TreeNode(GetDirectoryOrFileName(m_strDirectory));
newNode.Tag = m_strDirectory; string[] dirs = System.IO.Directory.GetDirectories(m_strDirectory);
foreach(string dir in dirs)
{
ClassDirectory subDir = new ClassDirectory();
subDir.SetDirectory(dir);
newNode.Nodes.Add(subDir.FillStuctTreeNode());
m_ADirectory.Add(subDir);
} string[] files = System.IO.Directory.GetFiles(m_strDirectory);
foreach(string file in files)
{
ClassFile subFile = new ClassFile();
subFile.SetPath(file); newNode.Nodes.Add(subFile.FillStructTreeNode());
m_AFile.Add(subFile);
} return newNode;
}// private string  GetDirectoryOrFileName(string strPath)
// {
// return strPath.Substring(strPath.LastIndexOf("\\") + 1, strPath.Length - strPath.LastIndexOf("\\") - 1);
// } public string GetNext(string strPrevious)
{
string strNext = null;
if(strPrevious == null)
{
for(int i = 0; i < m_ADirectory.Count; i++)
{
strNext = ((ClassDirectory)(m_ADirectory[i])).GetNext(strPrevious);
if(strNext != null)
break;
}
if(strNext == null)
{
if(m_AFile.Count > 0)
strNext = ((ClassFile)(m_AFile[0])).GetTransString();
}
}
else
{

strPrevious = strPrevious.Substring(GetName().Length + 1, strPrevious.Length - GetName().Length - 1);
if(strPrevious.IndexOf("\\") >= 0)
{
int i = 0; 
ClassDirectory CD = null;
for(i = 0; i < m_ADirectory.Count; i++)
{
CD = (ClassDirectory)(m_ADirectory[i]);
if(strPrevious.Substring(0, strPrevious.IndexOf("\\")).CompareTo(CD.GetName()) == 0)
{
break;
}
}
if(i >= m_ADirectory.Count)
strNext = null;
else
{
strNext = CD.GetNext(strPrevious);
if(strNext == null)
{
ClassFile CF = null;
for(int j = 0; j < m_AFile.Count; j++)
{
CF = (ClassFile)(m_AFile[j]);
strNext = CF.GetTransString();
if(strNext != null)
break;
}
}
}
}
else&#63730;
{
int i = 0;
ClassFile CF = null;
for(i = 0; i < m_AFile.Count; i++)
{
CF = (ClassFile)(m_AFile[i]);
if(strPrevious.CompareTo(CF.GetTransString()) == 0)
{
break;
}
} if(i < m_AFile.Count)
{
for(i++; i < m_AFile.Count; i++)
{
CF = (ClassFile)(m_AFile[i]);
strNext = CF.GetTransString();
if(strNext != null)
{
strNext = CF.GetTransString();
break;
}
}
}
}
} if(strNext != null)
strNext = GetName() + "\\" + strNext; return strNext;
}
}
}
作了一个 类,你可以看看。呵呵,对你也许有用。