获取文件路径相关方法

var questionNames = new List<string>();

var stringBuilder = StringBuilderCache.Get();
stringBuilder.Clear();
stringBuilder.Append(Application.dataPath);
stringBuilder.Append("/Art/System/General_UI/Group/Questionbox/UIMaps/portrait");
string path = stringBuilder.ToStringRecycle();
//files:G:/PlotEditor/Assets/Art/System/General_UI/Group/Questionbox/UIMaps/portrait\Alan\Scolding.png ...
string[] files = Directory.GetFiles(path, "*.png", SearchOption.AllDirectories);     //拿到某路径下,某类型的文件的路径
for (int i = 0; i < files.Length; i++) {
     string file = files[i];
     // name :Scolding.png
     string name = Path.GetFileName(file);           //获取文件名(也可不带后缀)
     // directoryName :G:/PlotEditor/Assets/Art/System/General_UI/Group/Questionbox/UIMaps/portrait/Alan
     string directoryName = Path.GetDirectoryName(file)?.Replace('\\', '/');      //获取父文件路径 ,
     //注意要把通过接口获取的路径中的"\\"替换一下。
     string parentName = directoryName?.Substring(directoryName.LastIndexOf('/') + 1);   //获取父文件夹名
     stringBuilder.Clear();
     stringBuilder.Append(parentName);
     stringBuilder.Append("/");
     stringBuilder.Append(name);
     questionNames.Add(stringBuilder.ToStringRecycle());
}

return questionNames;

例子中的文件结构


image.png

上面这一段代码的目的是获取文件及其父文件夹的相对路径。例:G:/PlotEditor/Assets/Art/System/General_UI/Group/Questionbox/UIMaps/portrait/Alan/Scolding.png 希望获取的结果是
Alan\Scolding.png。

directoryName.LastIndexOf('/') + 1 //获取string中最后一个出现”/“的位置,配合directoryName?.Substring(directoryName.LastIndexOf('/') + 1) 获取到的就是最后在”/“后出现的字符串

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容