12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using System.IO;
- namespace AutoBuilder
- {
- public class IoHelper
- {
- public const int BufferSize = 64;
- public static void CopyFile(string source, string dest)
- {
- using (var sourceStream = new FileStream(source, FileMode.Open, FileAccess.Read))
- {
- using (var destStream = new FileStream(dest, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite, BufferSize, FileOptions.WriteThrough))
- {
- sourceStream.CopyTo(destStream);
- }
- }
- }
- public static void CopyFolder(string sourceDirectory, string destDirectory)
- {
- var diSource = new DirectoryInfo(sourceDirectory);
- var diDest = new DirectoryInfo(destDirectory);
- CopyFolder(diSource, diDest);
- }
- public static void CopyFolder(DirectoryInfo source, DirectoryInfo dest)
- {
- if (!source.Exists)
- {
- throw new IOException($"Src {source.FullName} does not exist");
- }
- bool folderNew = false;
- if (!dest.Exists)
- {
- dest.Create();
- folderNew = true;
- }
- foreach (var file in source.GetFiles())
- {
- CopyFile(file.FullName, Path.Combine(dest.FullName, file.Name));
- }
- foreach (var srcChild in source.GetDirectories())
- {
- CopyFolder(srcChild, new DirectoryInfo(Path.Combine(dest.FullName, srcChild.Name)));
- }
- if (folderNew)
- {
- dest.LastAccessTimeUtc = source.LastAccessTimeUtc;
- dest.LastWriteTimeUtc = source.LastWriteTimeUtc;
- dest.CreationTimeUtc = source.CreationTimeUtc;
- }
- }
- public static void DeleteFolder(string folderPath)
- {
- var directoryInfo = new DirectoryInfo(folderPath);
- DeleteFolder(directoryInfo);
- }
- public static void DeleteFolder(DirectoryInfo directoryInfo)
- {
- if (!directoryInfo.Exists)
- {
- return;
- }
- foreach (var file in directoryInfo.GetFiles())
- {
- file.Attributes = FileAttributes.Normal;
- file.Delete();
- }
- foreach (var subFolder in directoryInfo.GetDirectories())
- {
- DeleteFolder(subFolder);
- }
- directoryInfo.Attributes = FileAttributes.Normal;
- directoryInfo.Delete();
- }
- }
- }
|