C#通过网络传输大量小文件

Zio*_*ioN 1 c# file-transfer ibm-midrange

我编写了一个C#控制台应用程序,用于将大量小型XML文件(大约80000个文件,每个大约300KB,总大小约3GB被传输)从AS400计算机上的共享目录复制到Windows机器上的共享目录.

这两台机器在同一个局域网上,但需要花费数小时才能进行复制.我需要遍历文件,因为我需要更新数据库中的表,我知道这可能是瓶颈,但不包括SQL更新; 是否有更快的方式来传输这些文件?

    public void CopyFiles()
    {
        DirectoryInfo IFS = new DirectoryInfo(@"\\AS400Machine\ShareFolder\");

        string NewPath = @"\\WindowsMachine\ShareFolder\";

        Directory.CreateDirectory(NewPath);
        foreach (FileInfo xmlFile in IFS.GetFiles())
        {
            var newFullPath = string.Format(@"{0}\{1}", NewPath, xmlFile.Name);

            // SQL Update

            // Copy File
            xmlFile.CopyTo(newFullPath, true);
        }
    }
Run Code Online (Sandbox Code Playgroud)

Ant*_*lev 5

如果您的程序在Machine C上运行并且它将文件从机器A传输到机器B,那么除了在多个线程或进程中进行复制之外,您无法做到这一点.

如果你可以在两台机器上运行你的程序,你可以做一些漂亮的技巧,比如压缩文件,这样你就可以传输一个(或几个)大文件,而不是数千个小文件.