原文:http://blog.csdn.net/vchao13/article/details/6200255
1、获取指定目录下所有文件信息
- /// <summary>
- /// 返回指定目录下所有文件信息
- /// </summary>
- /// <param name="strDirectory">目录字符串</param>
- /// <returns></returns>
- public List<FileInfo> GetAllFilesInDirectory(string strDirectory)
- {
- List<FileInfo> listFiles = new List<FileInfo>(); //保存所有的文件信息
- DirectoryInfo directory = new DirectoryInfo(strDirectory);
- DirectoryInfo[] directoryArray = directory.GetDirectories();
- FileInfo[] fileInfoArray = directory.GetFiles();
- if (fileInfoArray.Length > 0) listFiles.AddRange(fileInfoArray);
- foreach (DirectoryInfo _directoryInfo in directoryArray)
- {
- DirectoryInfo directoryA = new DirectoryInfo(_directoryInfo.FullName);
- DirectoryInfo[] directoryArrayA = directoryA.GetDirectories();
- FileInfo[] fileInfoArrayA = directoryA.GetFiles();
- if (fileInfoArrayA.Length > 0) listFiles.AddRange(fileInfoArrayA);
- GetAllFilesInDirectory(_directoryInfo.FullName);//递归遍历
- }
- return listFiles;
- }
2、移动此目录到指定目录
- /// <summary>
- /// 从一个目录将其内容移动到另一目录
- /// </summary>
- /// <param name="directorySource">源目录</param>
- /// <param name="directoryTarget">目的目录</param>
- private void MoveFolderTo(string directorySource, string directoryTarget)
- {
- //检查是否存在目的目录
- if (!Directory.Exists(directoryTarget))
- {
- Directory.CreateDirectory(directoryTarget);
- }
- //先来移动文件
- DirectoryInfo directoryInfo = new DirectoryInfo(directorySource);
- FileInfo[] files = directoryInfo.GetFiles();
- //移动所有文件
- foreach (FileInfo file in files)
- {
- //如果自身文件在运行,不能直接覆盖,需要重命名之后再移动
- if (File.Exists(Path.Combine(directoryTarget, file.Name)))
- {
- if (File.Exists(Path.Combine(directoryTarget, file.Name + ".bak")))
- {
- File.Delete(Path.Combine(directoryTarget, file.Name + ".bak"));
- }
- File.Move(Path.Combine(directoryTarget, file.Name), Path.Combine(directoryTarget, file.Name + ".bak"));
- }
- file.MoveTo(Path.Combine(directoryTarget, file.Name));
- }
- //最后移动目录
- DirectoryInfo[] directoryInfoArray = directoryInfo.GetDirectories();
- foreach (DirectoryInfo dir in directoryInfoArray)
- {
- MoveFolderTo(Path.Combine(directorySource, dir.Name), Path.Combine(directoryTarget, dir.Name));
- }
- }
3、拷贝此目录到指定目录
- /// <summary>
- /// 从一个目录将其内容复制到另一目录
- /// </summary>
- /// <param name="directorySource">源目录</param>
- /// <param name="directoryTarget">目的目录</param>
- static void CopyFolderTo(string directorySource, string directoryTarget)
- {
- //检查是否存在目的目录
- if (!Directory.Exists(directoryTarget))
- {
- Directory.CreateDirectory(directoryTarget);
- }
- //先来复制文件
- DirectoryInfo directoryInfo = new DirectoryInfo(directorySource);
- FileInfo[] files = directoryInfo.GetFiles();
- //复制所有文件
- foreach (FileInfo file in files)
- {
- file.CopyTo (Path.Combine(directoryTarget, file.Name));
- }
- //最后复制目录
- DirectoryInfo[] directoryInfoArray = directoryInfo.GetDirectories();
- foreach (DirectoryInfo dir in directoryInfoArray)
- {
- CopyFolderTo(Path.Combine(directorySource, dir.Name), Path.Combine(directoryTarget, dir.Name));
- }
- }