• 移动文件夹


    问题:将文件夹及其下面的文件移动到其他目录

      1 using Quality.Tools.Common.Log;
      2 using System;
      3 using System.Collections.Generic;
      4 using System.Configuration;
      5 using System.IO;
      6 using System.Linq;
      7 using System.Runtime.CompilerServices;
      8 using System.Text;
      9 using System.Threading.Tasks;
     10 
     11 namespace RPA.MoveFiles
     12 {
     13     class Program
     14     {
     15         static List<string> pathList = new List<string>();
     16         static void Main(string[] args)
     17         {
     18             Console.WriteLine("Start...");
     19             try
     20             {
     21                 Log4NetHelper.Info(typeof(Program), "Start...");
     22 
     23                 var directoryPath = ConfigurationManager.AppSettings["DirectoryPath"];
     24                 GetDirectoryPath(directoryPath);
     25 
     26                 if (pathList.Any())
     27                 {
     28                     foreach (var item in pathList)
     29                     {
     30                         var backPath = item.Substring(0, item.LastIndexOf('\')).Replace("\Orchestrator\", "\Orchestrator-Archive\");
     31                         CopyFolder(item, backPath);
     32 
     33                         DelectFiles(item);  //Delete subdirectories and files
     34 
     35                         //string user = System.IO.File.GetAccessControl(item).GetOwner(typeof(System.Security.Principal.NTAccount)).ToString();
     36                         //Log4NetHelper.Info(typeof(Program), "file:" + item + "
    User:" + user);
     37                     }
     38                 }
     39                 else
     40                 {
     41                     Log4NetHelper.Info(typeof(Program), "No files need to move...");
     42                 }
     43                 Log4NetHelper.Info(typeof(Program), "Finished...");
     44                 Console.WriteLine("Finished...");
     45             }
     46             catch (Exception e)
     47             {
     48                 Log4NetHelper.Error(typeof(Program), e.ToString());
     49                 Console.WriteLine(e.ToString());
     50             }
     51             Console.ReadKey();
     52         }
     53 
     54         public static void GetDirectoryPath(string srcPath)
     55         {
     56             DirectoryInfo dir = new DirectoryInfo(srcPath);
     57             FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();  //Returns all files and subdirectories in the directory
     58             foreach (FileSystemInfo i in fileinfo)
     59             {
     60                 if (i is DirectoryInfo && !i.Name.StartsWith("Robot"))            //Determine whether folder
     61                 {
     62                     GetDirectoryPath(i.FullName);
     63                 }
     64                 else if (i is DirectoryInfo && i.Name.StartsWith("Robot"))
     65                 {
     66                     dir = new DirectoryInfo(i.FullName);
     67                     fileinfo = dir.GetFileSystemInfos();  //Returns all files and subdirectories in the directory
     68                     foreach (FileSystemInfo fileSystemInfo in fileinfo)
     69                     {
     70                         var createTime = fileSystemInfo.CreationTime;
     71 
     72                         if (createTime < DateTime.Now.AddMonths(-1))    //Delete files that are a month old 
     73                         {
     74                             pathList.Add(fileSystemInfo.FullName);
     75                         }
     76                     }
     77                 }
     78             }
     79         }
     80 
     81         public static void DelectFiles(string srcPath)
     82         {
     83             #region Delete the files or deirectories under the path
     84             //DirectoryInfo dir = new DirectoryInfo(srcPath);
     85             //FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();  //Returns all files and subdirectories in the directory
     86             //foreach (FileSystemInfo i in fileinfo)
     87             //{
     88             //    if (i is DirectoryInfo)            //Determine whether folder
     89             //    {
     90             //        DirectoryInfo subdir = new DirectoryInfo(i.FullName);
     91             //        subdir.Delete(true);          //Delete subdirectories and files
     92             //    }
     93             //    else
     94             //    {
     95             //        //Before delete you must close the streamreader: sr.close();
     96             //        File.Delete(i.FullName);      //Delete specified file
     97             //    }
     98             //} 
     99             #endregion
    100 
    101             #region Delete the folder and the all contents under it.
    102             if (Directory.Exists(srcPath))            //Determine whether folder
    103             {
    104                 DirectoryInfo subdir = new DirectoryInfo(srcPath);
    105                 subdir.Delete(true);          //Delete subdirectories and files
    106             }
    107             else if (File.Exists(srcPath))            //Determine whether folder
    108             {
    109                 //Before delete you must close the streamreader: sr.close();
    110                 File.Delete(srcPath);      //Delete specified file
    111             }
    112             else
    113             {
    114                 Log4NetHelper.Error(typeof(Program), "Deleted failed, invalid path.");
    115                 Console.WriteLine("Deleted failed, invalid path.");
    116             }
    117             #endregion
    118         }
    119 
    120         /// <summary>
    121         /// Copy folders and files
    122         /// </summary>
    123         /// <param name="sourceFolder">Original file path</param>
    124         /// <param name="destFolder">Destination file path</param>
    125         /// <returns></returns>
    126         public static void CopyFolder(string sourceFolder, string destFolder)
    127         {
    128             string folderName = System.IO.Path.GetFileName(sourceFolder);
    129             string destfolderdir = System.IO.Path.Combine(destFolder, folderName);
    130             string[] filenames = System.IO.Directory.GetFileSystemEntries(sourceFolder);
    131             foreach (string file in filenames)  // Go through all the files and directories
    132             {
    133                 if (System.IO.Directory.Exists(file))
    134                 {
    135                     string currentdir = System.IO.Path.Combine(destfolderdir, System.IO.Path.GetFileName(file));
    136                     if (!System.IO.Directory.Exists(currentdir))
    137                     {
    138                         System.IO.Directory.CreateDirectory(currentdir);
    139                     }
    140                     CopyFolder(file, destfolderdir);
    141                 }
    142                 else
    143                 {
    144                     string srcfileName = System.IO.Path.Combine(destfolderdir, System.IO.Path.GetFileName(file));
    145                     if (!System.IO.Directory.Exists(destfolderdir))
    146                     {
    147                         System.IO.Directory.CreateDirectory(destfolderdir);
    148                     }
    149                     System.IO.File.Copy(file, srcfileName);
    150                 }
    151             }
    152         }
    153     }
    154 }
    View Code

    App.config:

    1 <?xml version="1.0" encoding="utf-8" ?>
    2 <configuration>
    3     <startup> 
    4         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    5     </startup>
    6   <appSettings>
    7     <add key="DirectoryPath" value="D:StudyOrchestratorStorage"/>
    8   </appSettings>
    9 </configuration>
    View Code

    上面的例子是将 D:StudyOrchestratorStorage 目录下一个月前的文件,移动到 D:StudyOrchestrator-ArchiveStorage 目录下,其中D:StudyOrchestrator ,D:StudyOrchestrator-Archive两个目录须存在。

  • 相关阅读:
    crs_stop 错误一列
    本地管理表空间和字典管理表空间的特点,ASSM有什么特点
    RAC 11.2的新特性
    oracle 11g RAC 的一些基本概念(三)
    【1】【leetcode-130】 被围绕的区域
    【leetcode-125】 验证回文串
    【1】【leetcode-127】单词接龙word-ladder
    【1】【leetcode-115】 不同的子序列 distinct-subsequences
    【1】[leetcode-124] 二叉树中的最大路径和
    [leetcode-128] 最长连续序列
  • 原文地址:https://www.cnblogs.com/shangec/p/12792641.html
Copyright © 2020-2023  润新知