| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 | using System;using System.Collections.Generic;using System.IO;using System.Text;namespace Ips.Library.Basic{    public static class DirectoryUtil    {        public static void CreateIfNotExists(string directory)        {            if (!Directory.Exists(directory))            {                Directory.CreateDirectory(directory);            }        }        public static void DeleteIfExists(string directory)        {            if (Directory.Exists(directory))            {                Directory.Delete(directory, true);            }        }        public static void DeleteIfExists(string directory, bool recursive)        {            if (Directory.Exists(directory))            {                Directory.Delete(directory, recursive);            }        }        public static void DeleteIfEmpty(string directory)        {            if (Directory.Exists(directory) && !Directory.EnumerateFiles(directory, "*", SearchOption.AllDirectories).Any())            {                Directory.Delete(directory, true);            }        }        public static bool DeleteFiles(string diretory, string searchPattern = "*", SearchOption searchOption = SearchOption.TopDirectoryOnly)        {            bool result = true;            if (Directory.Exists(diretory))            {                var fileNames = Directory.GetFiles(diretory, searchPattern, searchOption);                foreach (var fileName in fileNames)                {                    try                    {                        File.Delete(fileName);                    }                    catch                    {                        result = false;                    }                }            }            return result;        }        public static void CreateIfNotExists(DirectoryInfo directory)        {            if (!directory.Exists)            {                directory.Create();            }        }        public static bool IsSubDirectoryOf(string parentDirectoryPath, string childDirectoryPath)        {            return IsSubDirectoryOf(                new DirectoryInfo(parentDirectoryPath),                new DirectoryInfo(childDirectoryPath)            );        }        public static bool IsSubDirectoryOf(DirectoryInfo parentDirectory, DirectoryInfo childDirectory)        {            if (parentDirectory.FullName == childDirectory.FullName)            {                return true;            }            var parentOfChild = childDirectory.Parent;            if (parentOfChild == null)            {                return false;            }            return IsSubDirectoryOf(parentDirectory, parentOfChild);        }        public static IDisposable ChangeCurrentDirectory(string targetDirectory)        {            var currentDirectory = Directory.GetCurrentDirectory();            if (currentDirectory.Equals(targetDirectory, StringComparison.OrdinalIgnoreCase))            {                return NullDisposable.Instance;            }            Directory.SetCurrentDirectory(targetDirectory);            return new DisposeAction(() => { Directory.SetCurrentDirectory(currentDirectory); });        }    }}
 |