38 lines
1.3 KiB
C#
Raw Normal View History

2022-07-09 13:14:03 -04:00
using SPT_AKI_Installer.Aki.Core.Model;
using System;
2022-05-13 22:41:15 +01:00
using System.IO;
2022-05-14 02:58:38 +01:00
namespace SPT_AKI_Installer.Aki.Helper
2022-05-13 22:41:15 +01:00
{
public static class FileHelper
{
2022-07-09 13:08:41 -04:00
public static GenericResult CopyDirectoryWithProgress(DirectoryInfo sourceDir, DirectoryInfo targetDir, IProgress<double> progress)
{
2022-07-09 13:08:41 -04:00
try
{
2022-07-09 13:08:41 -04:00
int totalFiles = sourceDir.GetFiles("*.*", SearchOption.AllDirectories).Length;
int processedFiles = 0;
2022-07-09 13:08:41 -04:00
foreach (var dir in sourceDir.GetDirectories("*", SearchOption.AllDirectories))
{
2022-07-09 13:08:41 -04:00
Directory.CreateDirectory(dir.FullName.Replace(sourceDir.FullName, targetDir.FullName));
}
2022-07-09 13:08:41 -04:00
foreach (var file in sourceDir.GetFiles("*.*", SearchOption.AllDirectories))
{
2022-07-09 13:08:41 -04:00
File.Copy(file.FullName, file.FullName.Replace(sourceDir.FullName, targetDir.FullName), true);
processedFiles++;
progress.Report((int)Math.Floor(((double)processedFiles / totalFiles) * 100));
}
2022-07-09 13:08:41 -04:00
return GenericResult.FromSuccess();
}
2022-07-09 13:14:03 -04:00
catch (Exception ex)
2022-07-09 13:08:41 -04:00
{
return GenericResult.FromError(ex.Message);
}
}
2022-05-13 22:41:15 +01:00
}
}