Files
plugin-library/Assets/00.StaryEvo/Runtime/Tool/FluentAPI/1.CSharp/2.SystemIOExtension.cs

183 lines
5.0 KiB
C#
Raw Normal View History

2025-03-31 11:16:52 +08:00
using System.IO;
namespace Stary.Evo
{
#if UNITY_EDITOR
[ClassAPI("01.FluentAPI.CSharp", "System.IO", 2)]
[APIDescriptionCN("针对 System.IO 提供的链式扩展,主要是文件和文件夹的一些 IO 操作")]
[APIDescriptionEN("IO chain extension for system. IO, mainly file and folder IO operations")]
#endif
public static class SystemIOExtension
{
#if UNITY_EDITOR
// v1 No.10
[MethodAPI]
[APIDescriptionCN("创建文件夹,如果存在则不创建")]
[APIDescriptionEN("Create folder or not if it exists")]
[APIExampleCode(@"
var testDir = ""Assets/TestFolder"";
testDir.CreateDirIfNotExists();"
)]
#endif
public static string CreateDirIfNotExists(this string dirFullPath)
{
if (!Directory.Exists(dirFullPath))
{
Directory.CreateDirectory(dirFullPath);
}
return dirFullPath;
}
#if UNITY_EDITOR
// v1 No.11
[MethodAPI]
[APIDescriptionCN("删除文件夹,如果存在")]
[APIDescriptionEN("Delete the folder if it exists")]
[APIExampleCode(@"
var testDir =""Assets/TestFolder"";
testDir.DeleteDirIfExists();
")]
#endif
public static void DeleteDirIfExists(this string dirFullPath)
{
if (Directory.Exists(dirFullPath))
{
Directory.Delete(dirFullPath, true);
}
}
#if UNITY_EDITOR
// v1 No.12
[MethodAPI]
[APIDescriptionCN("清空 Dir保留目录),如果存在")]
[APIDescriptionEN("Clear Dir (reserved directory), if exists")]
[APIExampleCode(@"
var testDir = ""Assets/TestFolder"";
testDir.EmptyDirIfExists();
")]
#endif
public static void EmptyDirIfExists(this string dirFullPath)
{
if (Directory.Exists(dirFullPath))
{
Directory.Delete(dirFullPath, true);
}
Directory.CreateDirectory(dirFullPath);
}
#if UNITY_EDITOR
// v1 No.13
[MethodAPI]
[APIDescriptionCN("删除文件 如果存在")]
[APIDescriptionEN("Delete the file if it exists")]
[APIExampleCode(@"
var filePath = ""Assets/Test.txt"";
File.Create(""Assets/Test"");
filePath.DeleteFileIfExists();
")]
#endif
public static bool DeleteFileIfExists(this string fileFullPath)
{
if (File.Exists(fileFullPath))
{
File.Delete(fileFullPath);
return true;
}
return false;
}
#if UNITY_EDITOR
// v1 No.14
[MethodAPI]
[APIDescriptionCN("合并路径")]
[APIDescriptionEN("Combine path")]
[APIExampleCode(@"
var path = Application.dataPath.CombinePath(""Resources"");
Debug.Log(Path)
// projectPath/Assets/Resources
")]
#endif
public static string CombinePath(this string selfPath, string toCombinePath)
{
return Path.Combine(selfPath, toCombinePath);
}
#if UNITY_EDITOR
// v1 No.15
[MethodAPI]
[APIDescriptionCN("根据路径获取文件名")]
[APIDescriptionEN("get file name by path")]
[APIExampleCode(@"
var fileName =""/abc/def/b.txt"".GetFileName();
Debug.Log(fileName0);
// b.txt
")]
#endif
public static string GetFileName(this string filePath)
{
return Path.GetFileName(filePath);
}
#if UNITY_EDITOR
// v1 No.16
[MethodAPI]
[APIDescriptionCN("根据路径获取文件名,不包含文件扩展名")]
[APIDescriptionEN("Get the file name based on the path, excluding the file name extension")]
[APIExampleCode(@"
var fileName =""/abc/def/b.txt"".GetFileNameWithoutExtend();
Debug.Log(fileName0);
// b
")]
#endif
public static string GetFileNameWithoutExtend(this string filePath)
{
return Path.GetFileNameWithoutExtension(filePath);
}
#if UNITY_EDITOR
// v1 No.17
[MethodAPI]
[APIDescriptionCN("根据路径获取文件扩展名")]
[APIDescriptionEN("Get the file extension based on the path")]
[APIExampleCode(@"
var fileName =""/abc/def/b.txt"".GetFileExtendName();
Debug.Log(fileName0);
// .txt
")]
#endif
public static string GetFileExtendName(this string filePath)
{
return Path.GetExtension(filePath);
}
#if UNITY_EDITOR
// v1 No.156
[MethodAPI]
[APIDescriptionCN("获取文件夹路径")]
[APIDescriptionEN("get filePath's folder path")]
[APIExampleCode(@"
var folderPath =""/abc/def/b.txt"".GetFolderPath();
Debug.Log(fileName0);
// /abs/def
")]
#endif
public static string GetFolderPath(this string path)
{
if (string.IsNullOrEmpty(path))
{
return string.Empty;
}
return Path.GetDirectoryName(path);
}
}
}