Files
Mitria_Minecraft_Project/CommonLibrary/Extensions.cs
2025-09-05 20:43:59 +09:00

59 lines
2.0 KiB
C#

using System.IO;
using System.Text;
namespace CommonLibrary
{
public static class Extensions
{
/// <summary>경로를 일관된 포맷으로 변경</summary>
/// <param name="paths">경로 리스트들</param>
/// <returns>폴더 구분자가 / 로 일관되게 변경된 경로</returns>
public static string PathCombine(params string[] paths)
{
if (paths == null || paths.Length == 0)
return string.Empty;
var sb = new StringBuilder();
for (int i = 0; i < paths.Length; i++)
{
if (string.IsNullOrEmpty(paths[i]))
continue;
var part = paths[i].Replace("\\", "/").Trim('/');
if (sb.Length > 0)
sb.Append('/');
sb.Append(part);
}
return sb.ToString();
}
public static bool IsDefault<T>(ref this T data) where T : struct
=> default(T).Equals(data);
public static void DeepMove(this DirectoryInfo sourceDirectoryInfo, DirectoryInfo targetDirectoryInfo)
{
if (!sourceDirectoryInfo.Exists) return;
if (sourceDirectoryInfo.Root.Name == targetDirectoryInfo.Root.Name)
{
sourceDirectoryInfo.MoveTo(targetDirectoryInfo.FullName);
}
else
{
var fileInfos = sourceDirectoryInfo.GetFiles("*", SearchOption.AllDirectories);
foreach (var file in fileInfos)
{
var targetDirectory = new DirectoryInfo(file.DirectoryName.Replace(sourceDirectoryInfo.FullName, targetDirectoryInfo.FullName));
targetDirectory.Create();
var targetFileName = System.IO.Path.Combine(targetDirectory.FullName, file.Name);
file.CopyTo(targetFileName, true);
}
sourceDirectoryInfo.Delete(true);
}
}
}
}