求一递归函数
小弟做一同步程序,需一函数,请各位帮帮忙。
函数:文件夹同步输入,两个需要同步的文件夹根目录结果:两个文件夹下面的内容完全相同,
做了个DirectoryInfo类,其可以读一个文件夹,它的GetFileSystemInfos方法可以读文件夹下的子目录和文件,
把两边的目录信息都用递归来遍历,然后把所有的文件夹,文件信息存在一个数组或者集合中,然后把两个集合中的共同部分去掉,剩下的分别遍历,是文件夹就建,是文件就拷。
小弟先谢了。
[解决办法]
/// <summary>
/// 递归目录
/// </summary>
private void AddFolder()
{
try
{
//this.folderBrowserDialog1.SelectedPath = " ";
if (this.folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string path = folderBrowserDialog1.SelectedPath;
DirectoryInfo dinfo = new DirectoryInfo(path);
FileSystemInfo finfo = dinfo as FileSystemInfo;
ListFolderFiles(finfo);
}
}
catch (Exception)
{
}
}
private void ListFolderFiles(FileSystemInfo fileinfo)
{
if (!fileinfo.Exists) return;
DirectoryInfo dirinfo = fileinfo as DirectoryInfo;
if (dirinfo == null) return; //不是目录
FileSystemInfo[] files = dirinfo.GetFileSystemInfos();
for (int i = 0; i < files.Length; i++) //遍历目录下所有文件、子目录
{
FileInfo file = files[i] as FileInfo;
if (file != null) // 是文件
{
if (file.Extension.ToLower() == "你的扩展名 ")
{
Mp3Tag mp3 = new Mp3Tag(file.FullName);
list_front.Add(mp3);
}
}
else //是目录
{
ListFolderFiles(files[i]); //对子目录进行递归调用
}
}
}