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); });
- }
- }
- }
|