move CopyFiles to Utils

This commit is contained in:
Pilzinsel64
2024-08-30 07:53:05 +02:00
parent f7008e4e97
commit d49329c868
2 changed files with 41 additions and 46 deletions

View File

@@ -1,46 +0,0 @@
namespace Pilz.Updating.Client;
internal static class General
{
public static void CopyFiles(DirectoryInfo sourceDir, DirectoryInfo destinationDir)
{
if (!destinationDir.Exists)
destinationDir.Create();
foreach (FileInfo sFile in sourceDir.EnumerateFiles("*", SearchOption.TopDirectoryOnly))
{
var dFile = new FileInfo(Path.Combine(destinationDir.FullName, sFile.Name));
var triesLeft = 1;
while (triesLeft > 0)
{
triesLeft--;
try
{
sFile.CopyTo(dFile.FullName, true);
}
catch (IOException)
{
if (triesLeft == 0 && File.Exists(dFile.FullName))
{
var oldFile = dFile.FullName + ".old";
File.Delete(oldFile);
File.Move(dFile.FullName, oldFile, true);
File.Delete(oldFile);
triesLeft++;
}
}
catch (Exception)
{
}
}
}
foreach (DirectoryInfo sDir in sourceDir.EnumerateDirectories("*", SearchOption.TopDirectoryOnly))
{
var dDir = destinationDir.CreateSubdirectory(sDir.Name);
CopyFiles(sDir, dDir);
}
}
}

View File

@@ -2,4 +2,45 @@
public static class Utils public static class Utils
{ {
public static void CopyFiles(DirectoryInfo sourceDir, DirectoryInfo destinationDir)
{
if (!destinationDir.Exists)
destinationDir.Create();
foreach (FileInfo sFile in sourceDir.EnumerateFiles("*", SearchOption.TopDirectoryOnly))
{
var dFile = new FileInfo(Path.Combine(destinationDir.FullName, sFile.Name));
var triesLeft = 1;
while (triesLeft > 0)
{
triesLeft--;
try
{
sFile.CopyTo(dFile.FullName, true);
}
catch (IOException)
{
if (triesLeft == 0 && File.Exists(dFile.FullName))
{
var oldFile = dFile.FullName + ".old";
File.Delete(oldFile);
File.Move(dFile.FullName, oldFile, true);
File.Delete(oldFile);
triesLeft++;
}
}
catch (Exception)
{
}
}
}
foreach (DirectoryInfo sDir in sourceDir.EnumerateDirectories("*", SearchOption.TopDirectoryOnly))
{
var dDir = destinationDir.CreateSubdirectory(sDir.Name);
CopyFiles(sDir, dDir);
}
}
} }