我需要在网络上传输很多小文件。我的文件总大小约为 3G,未来还会增长。我知道如果我将文件传输到一个文件中,如(winrar 文件、winzip 文件或 7 zipfile),网络上的性能会更好,但我会在 cpu 时间后支付压缩和解压缩文件的费用。
有没有办法在 c# 中将我的目录转移到一个文件中,而无需使用第三方,如 winrar、winzip、7zip ....
以最佳性能传输我的文件夹、子文件夹和文件的最佳方式是什么?
现在我使用自定义方法来做这件事导致Directory.Move
给我一些问题
有我的实际方法,我知道它可能不是性能最好的方法。有什么建议吗?
问题是 :
如何在 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);
}
}
}
}