123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 loyalsoft. All rights reserved.
- // Homepage: http://www.game7000.com/
- // Feedback: http://www.game7000.com/
- //------------------------------------------------------------
- using System.IO;
- namespace GameFramework
- {
- public static partial class Utility
- {
- /// <summary>
- /// 路径相关的实用函数。
- /// </summary>
- public static class Path
- {
- /// <summary>
- /// 获取规范的路径。
- /// </summary>
- /// <param name="path">要规范的路径。</param>
- /// <returns>规范的路径。</returns>
- public static string GetRegularPath(string path)
- {
- if (path == null)
- {
- return null;
- }
- return path.Replace('\\', '/');
- }
- /// <summary>
- /// 获取远程格式的路径(带有file:// 或 http:// 前缀)。
- /// </summary>
- /// <param name="path">原始路径。</param>
- /// <returns>远程格式路径。</returns>
- public static string GetRemotePath(string path)
- {
- string regularPath = GetRegularPath(path);
- if (regularPath == null)
- {
- return null;
- }
- return regularPath.Contains("://") ? regularPath : ("file:///" + regularPath).Replace("file:////", "file:///");
- }
- /// <summary>
- /// 移除空文件夹。
- /// </summary>
- /// <param name="directoryName">要处理的文件夹名称。</param>
- /// <returns>是否移除空文件夹成功。</returns>
- public static bool RemoveEmptyDirectory(string directoryName)
- {
- if (string.IsNullOrEmpty(directoryName))
- {
- throw new GameFrameworkException("Directory name is invalid.");
- }
- try
- {
- if (!Directory.Exists(directoryName))
- {
- return false;
- }
- // 不使用 SearchOption.AllDirectories,以便于在可能产生异常的环境下删除尽可能多的目录
- string[] subDirectoryNames = Directory.GetDirectories(directoryName, "*");
- int subDirectoryCount = subDirectoryNames.Length;
- foreach (string subDirectoryName in subDirectoryNames)
- {
- if (RemoveEmptyDirectory(subDirectoryName))
- {
- subDirectoryCount--;
- }
- }
- if (subDirectoryCount > 0)
- {
- return false;
- }
- if (Directory.GetFiles(directoryName, "*").Length > 0)
- {
- return false;
- }
- Directory.Delete(directoryName);
- return true;
- }
- catch
- {
- return false;
- }
- }
- }
- }
- }
|