You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在netcoreapp中如何让StreamReader加载代码同目录下的JSON文件?

.NET Core读取代码目录下JSON文件的解决方法

问题根源

.NET Core默认将程序的工作目录设置为编译后的输出目录(即bin/Debug/netcoreapp3.1),而非项目代码所在的目录,所以直接用GetFullPath()这类方法会指向输出目录。


解决办法

1. 同步文件到输出目录(最简单)

右键项目中的JSON文件 → 属性 → 在「复制到输出目录」选项中选择「如果较新则复制」或「始终复制」。
编译时文件会自动同步到bin目录,此时原有的StreamReader路径代码就能正常读取文件。

2. 直接获取代码目录的绝对路径

通过代码推导项目代码所在目录,示例:

// 从当前工作目录往上退一级,得到项目代码目录
string projectDir = Path.GetDirectoryName(Directory.GetCurrentDirectory());
string jsonFilePath = Path.Combine(projectDir, "your-json-file.json");

// 读取文件
using var reader = new StreamReader(jsonFilePath);
string jsonContent = reader.ReadToEnd();

如果上述路径不对,可尝试多退一级(适合多层目录结构):

string projectDir = Path.GetDirectoryName(Path.GetDirectoryName(Directory.GetCurrentDirectory()));

3. 使用.NET Core内置配置系统(推荐)

无需手动用StreamReader,利用框架自带的配置加载能力:

using Microsoft.Extensions.Configuration;

// 构建配置对象
var configBuilder = new ConfigurationBuilder()
    // 指定代码目录为配置文件的基路径
    .SetBasePath(Path.GetDirectoryName(Directory.GetCurrentDirectory()))
    .AddJsonFile("your-json-file.json", optional: false);

IConfiguration config = configBuilder.Build();

// 直接读取配置项,比如获取某个键的值
string value = config["YourConfigKey"];

内容的提问来源于stack exchange,提问作者Limey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:05:11