ネットワーク上でたくさんの小さなファイルを転送する必要があります。私のファイルの合計サイズは約 3G で、今後さらに大きくなります。ファイルを 1 つのファイル (winrar ファイル、winzip ファイル、または 7 zip ファイル) のように転送すると、ネットワーク上でのパフォーマンスが向上することはわかっていますが、後でファイルを圧縮および解凍するための CPU 時間を支払うことになります。
winrar、winzip、7zipなどのサードパーティを使用せずに、ディレクトリを1つのファイルだけに転送するC#の方法はありますか....
フォルダ、サブフォルダ、およびファイルを最高のパフォーマンスで転送する最良の方法は何ですか?
今、カスタムメソッドを使用してそれを行うと、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);
}
}
}
}