我已经编写了一个C#控制台应用程序,用于将AS400计算机上的共享目录中的大量小型XML文件(大约80000个文件,每个大约300KB,总大小约3GB)传输到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);
}
}
答案 0 :(得分:5)
如果您的程序在计算机C 上运行,并且它将文件从计算机A 传输到计算机B ,那么您就不多了可以在这里做,除了在多个线程或进程中进行复制。
如果你可以在两台机器上运行你的程序,你可以做一些漂亮的技巧,比如压缩文件,这样你就可以传输一个(或几个)大文件,而不是数千个小文件。
答案 1 :(得分:1)
AS / 400上的文件在哪里?如果在/ QDLS文件系统中,那可能是您的大部分问题。
另外,如果您实际使用的是AS / 400;而不是更现代的硬件和OS。
最后,假设您有现代硬件,您可能会要求IBM i人员检查网卡上的设置。我在新的1GBit硬件配置的原始硬件上看到了10Mbit半双工。