183 lines
5.0 KiB
C#
183 lines
5.0 KiB
C#
|
||
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);
|
||
}
|
||
|
||
}
|
||
} |