.NET Core读取指定路径文件:如何定位admin目录下的assets文件夹
定位到admin目录下的assets文件夹解决方案
你可以通过以下几种方式调整路径,找到admin目录下的assets文件夹:
方法一:硬编码向上跳转层级(适合目录结构固定的情况)
当前你获取的路径是项目的输出目录 /Users/alt/Projects/MyProjects/EazyCityCore/EazyCityCA/bin/Debug/net6.0,这个路径距离项目根目录(EazyCityCA)有3级层级(net6.0 → Debug → bin)。你可以通过Directory.GetParent逐级向上定位到项目根目录,再拼接admin/assets的路径:
// 获取程序集所在的输出目录 var outputDir = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); // 向上跳转3级到项目根目录(EazyCityCA) var projectRootDir = Directory.GetParent(outputDir).Parent.Parent.FullName; // 拼接得到admin/assets的完整路径 var assetsFullPath = Path.Combine(projectRootDir, "admin", "assets");
方法二:动态查找父目录(更灵活,适配目录结构变化)
如果担心后续目录结构调整导致硬编码层级失效,可以通过循环向上查找包含admin目录的父目录:
var currentDirInfo = new DirectoryInfo(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)); // 逐级向上遍历,直到找到包含admin目录的文件夹 while (currentDirInfo != null && !currentDirInfo.GetDirectories("admin").Any()) { currentDirInfo = currentDirInfo.Parent; } if (currentDirInfo != null) { var assetsFullPath = Path.Combine(currentDirInfo.FullName, "admin", "assets"); // 在此处使用assetsFullPath进行文件读取操作 } else { // 处理未找到admin目录的异常情况,比如抛出提示或记录日志 }
额外提示:将assets文件复制到输出目录(可选)
如果不需要定位到原admin目录,而是希望直接从输出目录读取assets文件,可以在开发工具中(如Visual Studio、Rider)选中assets文件夹下的文件,设置复制到输出目录为如果较新则复制或始终复制。编译后assets文件会被复制到输出目录,你可以直接用当前获取的路径拼接对应相对路径(比如../admin/assets,根据实际层级调整)来读取。
内容的提问来源于stack exchange,提问作者Cyrus the Great
相关产品推荐
相关产品推荐

