Files
plugin-library/Assets/00.StaryEvo/Runtime/Tool/FluentAPI/1.CSharp/2.SystemIOExtension.cs
2025-03-31 11:16:52 +08:00

183 lines
5.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
}
}
}