转:C# 获取指定目录下所有文件信息、移动目录、拷贝目录

http://blog.csdn.net/vchao13/article/details/6200255

1、获取指定目录下所有文件信息

  1. /// <summary>  
  2.       /// 返回指定目录下所有文件信息  
  3.       /// </summary>  
  4.       /// <param name="strDirectory">目录字符串</param>  
  5.       /// <returns></returns>  
  6.       public List<FileInfo> GetAllFilesInDirectory(string strDirectory)  
  7.       {  
  8.           List<FileInfo> listFiles = new List<FileInfo>(); //保存所有的文件信息  
  9.           DirectoryInfo directory = new DirectoryInfo(strDirectory);  
  10.           DirectoryInfo[] directoryArray = directory.GetDirectories();  
  11.           FileInfo[] fileInfoArray = directory.GetFiles();  
  12.           if (fileInfoArray.Length > 0) listFiles.AddRange(fileInfoArray);  
  13.           foreach (DirectoryInfo _directoryInfo in directoryArray)  
  14.           {  
  15.               DirectoryInfo directoryA = new DirectoryInfo(_directoryInfo.FullName);  
  16.               DirectoryInfo[] directoryArrayA = directoryA.GetDirectories();  
  17.               FileInfo[] fileInfoArrayA = directoryA.GetFiles();  
  18.               if (fileInfoArrayA.Length > 0) listFiles.AddRange(fileInfoArrayA);  
  19.               GetAllFilesInDirectory(_directoryInfo.FullName);//递归遍历  
  20.           }  
  21.           return listFiles;  
  22.       }  

 

2、移动此目录到指定目录

  1. /// <summary>  
  2.         /// 从一个目录将其内容移动到另一目录  
  3.         /// </summary>  
  4.         /// <param name="directorySource">源目录</param>  
  5.         /// <param name="directoryTarget">目的目录</param>  
  6.         private void  MoveFolderTo(string directorySource, string directoryTarget)  
  7.         {  
  8.             //检查是否存在目的目录  
  9.             if (!Directory.Exists(directoryTarget))  
  10.             {  
  11.                 Directory.CreateDirectory(directoryTarget);                 
  12.             }  
  13.             //先来移动文件  
  14.             DirectoryInfo directoryInfo = new DirectoryInfo(directorySource);  
  15.             FileInfo[] files = directoryInfo.GetFiles();  
  16.             //移动所有文件  
  17.             foreach (FileInfo file in files)  
  18.             {                 
  19.                 //如果自身文件在运行,不能直接覆盖,需要重命名之后再移动  
  20.                 if (File.Exists(Path.Combine(directoryTarget, file.Name)))  
  21.                 {  
  22.                     if (File.Exists(Path.Combine(directoryTarget, file.Name + ".bak")))  
  23.                     {  
  24.                         File.Delete(Path.Combine(directoryTarget, file.Name + ".bak"));  
  25.                     }  
  26.                     File.Move(Path.Combine(directoryTarget, file.Name), Path.Combine(directoryTarget, file.Name + ".bak"));  
  27.                      
  28.                 }  
  29.                 file.MoveTo(Path.Combine(directoryTarget, file.Name));  
  30.                  
  31.             }  
  32.             //最后移动目录  
  33.             DirectoryInfo[] directoryInfoArray = directoryInfo.GetDirectories();  
  34.             foreach (DirectoryInfo dir in directoryInfoArray)  
  35.             {  
  36.                 MoveFolderTo(Path.Combine(directorySource, dir.Name), Path.Combine(directoryTarget, dir.Name));  
  37.             }              
  38.         }         

 

3、拷贝此目录到指定目录

  1. /// <summary>  
  2.        /// 从一个目录将其内容复制到另一目录  
  3.        /// </summary>  
  4.        /// <param name="directorySource">源目录</param>  
  5.        /// <param name="directoryTarget">目的目录</param>  
  6.        static void CopyFolderTo(string directorySource, string directoryTarget)  
  7.        {  
  8.            //检查是否存在目的目录  
  9.            if (!Directory.Exists(directoryTarget))  
  10.            {  
  11.                Directory.CreateDirectory(directoryTarget);  
  12.            }  
  13.            //先来复制文件  
  14.            DirectoryInfo directoryInfo = new DirectoryInfo(directorySource);  
  15.            FileInfo[] files = directoryInfo.GetFiles();  
  16.            //复制所有文件  
  17.            foreach (FileInfo file in files)  
  18.            {                 
  19.                file.CopyTo (Path.Combine(directoryTarget, file.Name));  
  20.            }  
  21.            //最后复制目录  
  22.            DirectoryInfo[] directoryInfoArray = directoryInfo.GetDirectories();  
  23.            foreach (DirectoryInfo dir in directoryInfoArray)  
  24.            {  
  25.                CopyFolderTo(Path.Combine(directorySource, dir.Name), Path.Combine(directoryTarget, dir.Name));  
  26.            }  
  27.   
  28.        }    
posted @ 2013-08-15 15:05  E1ement  阅读(287)  评论(0编辑  收藏  举报