C# 需要在网络上传输超过3G的小文件

C# 需要在网络上传输超过3G的小文件,c#,networking,directory,compression,C#,Networking,Directory,Compression,我需要在网络上传输很多小文件。我的文件的总大小大约是3G,并且在未来还会增长。我知道如果我将文件传输到一个文件(winrar文件、winzip文件或7 zipfile)中,网络上的性能会更好,但我会在以后的cpu时间内支付压缩和解压缩文件的费用 在c#中是否有一种方法可以只在一个文件中传输我的目录,而不使用像winrar、winzip、7zip之类的第三方 以最佳性能传输我的文件夹、子文件夹和文件的最佳方式是什么 现在我使用一个自定义方法来做这件事,这会导致目录。Move给我一些问题 这是我的实

我需要在网络上传输很多小文件。我的文件的总大小大约是3G,并且在未来还会增长。我知道如果我将文件传输到一个文件(winrar文件、winzip文件或7 zipfile)中,网络上的性能会更好,但我会在以后的cpu时间内支付压缩和解压缩文件的费用

在c#中是否有一种方法可以只在一个文件中传输我的目录,而不使用像winrar、winzip、7zip之类的第三方

以最佳性能传输我的文件夹、子文件夹和文件的最佳方式是什么

现在我使用一个自定义方法来做这件事,这会导致
目录。Move
给我一些问题

这是我的实际方法,我知道它可能不是性能最好的transfert方法。有什么建议吗

问题是:

如何在c#中的网络共享上传输性能更好的所有目录和文件,包括压缩和解压缩(如果需要的话)?

private void CopyDirectory(string source, string destination)
    {
      string[] files;


      if (!Directory.Exists(destination)) DirectoryHelper.CreateDirectoriesFromPath(destination);

      files = Directory.GetFileSystemEntries(source);

      foreach (string fileElement in files)
      {
        if (Directory.Exists(fileElement))
        {
          if (!ExcludedDirectoryName.Contains(Path.GetFileNameWithoutExtension(fileElement)))
          {
            CopyDirectory(fileElement, Path.Combine(destination, Path.GetFileName(fileElement)));
          }
        }
        else
        {
          try
          {
            // Valide si le fichier fait partie de la liste d'exclusion
            if (!ExcludedDirectoryName.Contains(Path.GetFileNameWithoutExtension(fileElement)))
            {
              // Calcule le Path de destination
              string destinationFile = Path.Combine(destination, Path.GetFileName(fileElement));

              // Valide si le fichier existe
              if (FileHelper.Exist(destinationFile))
              {
                // Supprime le fichier
                File.Delete(destinationFile);
              }

              // Copie le nouveau fichier
              File.Copy(fileElement, destinationFile, true);
            }
          }
          catch (IOException ioEx)
          {


            // Log l'exception
            ExceptionLogger.Publish(ioEx);
          }
        }
      }
    }

与逐文件传输相比,像zip这样的存档格式有很多优点,特别是在处理成千上万个小文件时。首先,zip已经完全调试好了。您不必担心诸如空文件或目录之类的边缘情况。另一方面,通过网络传输几个大文件比传输很多小文件所需的开销要少得多

在获取文件的文件系统和接收文件的文件系统上,每个文件都有很多开销。除了创建文件系统(当您可以设置适当的块和集群大小时)之外,您无法处理此开销

在程序中使用DotNetZip之类的归档包可能会有所帮助。您将能够在程序的控制下编写和读取zip文件。过来看。 . Sharpziplib也是一种可能性


但是,您可能需要考虑使用rsync之类的工具。这是专门为您正在做的事情而构建的,并且完全经过调试

问题/问题是什么?leppie,对不起,我的问题是:如何在网络共享上以更好的性能传输我的所有目录和文件,包括压缩和解压缩(如果需要的话)?性能,与往常一样,这是一个模棱两可的词。你的意思是“在尽可能短的时间内使用所有pc资源”,还是“在pc空闲时使用空闲时间对pc可用性的影响较小”。我需要在尽可能短的时间内完成这项工作。