Maison  >  Article  >  développement back-end  >  .NET implémente un simple programme de sauvegarde incrémentielle de fichiers

.NET implémente un simple programme de sauvegarde incrémentielle de fichiers

黄舟
黄舟original
2017-02-22 10:37:071962parcourir

.Net propose de nombreuses méthodes pratiques, notamment la recherche de fichiers dans les fichiers traités, la copie de fichiers, etc. Ce qui est mis en œuvre aujourd'hui est de réaliser une sauvegarde incrémentielle des fichiers via un programme simple.

La première chose dont vous avez besoin est de sélectionner le chemin du fichier source de sauvegarde SourcePath et le chemin du fichier de destination de sauvegarde DestinationPath, puis d'utiliser StopWatch pour compter le temps passé à la copie. (Remarque : pour utiliser StopWatch, vous devez ajouter l'espace de noms using System.Diagnostics, et pour lire et écrire des fichiers, vous devez ajouter l'espace de noms using System.IO).

/// <summary>
/// 增量备份函数方法
/// </summary>
/// <param name="SourcePath">备份源文件路径</param>
/// <param name="DestinationPath">备份目标文件路径</param>
public void CopyDirectory(String SourcePath, String DestinationPath){
  Stopwatch watch = new Stopwatch();
  watch.Start();   //开始计算时间
  // 检查目标目录是否以目录分割字符结束如果不是则添加
  if (DestinationPath[DestinationPath.Length - 1] != Path.DirectorySeparatorChar)
  {
   DestinationPath += Path.DirectorySeparatorChar;
  }
  //判断目标目录是否存在如果不存在则新建
  if (!Directory.Exists( DestinationPath))
  {
   Directory.CreateDirectory(DestinationPath);
  }
  // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
  string[] fileList = Directory.GetFileSystemEntries(SourcePath);
  // 遍历所有的文件和目录
  foreach (string SourceFilename in fileList)
   {
    string filename = Path.GetFileName(SourceFilename);
     //先判断文件在目标文件夹中是否存在
     if (File.Exists(DestinationPath + filename))
      {
       FileInfo oldFile = new FileInfo(SourceFilename);
       FileInfo newFile = new FileInfo(DestinationPath + filename);
       if (oldFile.LastWriteTime == newFile.LastWriteTime) 
        {
          continue;     //跳出本次循环
        }
       }      else {
       // 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
       if (Directory.Exists(SourceFilename))
        {
          CopyDirectory(SourceFilename, DestinationPath + filename);
        }// 否则直接Copy文件
        else {
          File.Copy(SourceFilename, DestinationPath + filename, true);          }
       }
   }
  watch.Stop();  //时间停止  MessageBox.Show("备份完成 耗时"+watch.Elapsed+""); //显示所消耗的时间
}



Ce qui précède est le contenu de .NET pour implémenter un simple programme de sauvegarde incrémentielle de fichiers. Pour plus de contenu connexe, veuillez. faites attention à PHP Chinese Net (www.php.cn) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn