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

使用相对路径无法找到文本文件,仅绝对路径生效的问题咨询

问题描述

我在工作文件夹中创建了文本文件Info.txt,但代码里用相对路径无法识别该文件,只有绝对路径能成功找到,相关代码如下:

string fileName = "Info.txt";            

if (File.Exists(fileName ))
{
    Console.WriteLine("File Exists");
    Console.WriteLine("File was created " + File.GetCreationTime(fileName));
    Console.WriteLine("File was last written to " + File.GetLastWriteTime(fileName));
}
else
{
    Console.WriteLine("File does not exist.");
}
原因

核心问题是程序运行时的当前工作目录,和你创建文件的工作文件夹不是同一个。相对路径的解析是基于程序启动时的当前目录,而非你写代码时的项目文件夹。比如在Visual Studio这类IDE里运行程序,默认当前目录是项目的bin/Debug或bin/Release目录,不是你放Info.txt的项目根目录,自然找不到文件。

解决办法
  • 直接用绝对路径:把文件名改成完整的绝对路径,比如string fileName = @"C:\你的工作文件夹路径\Info.txt";。缺点是换环境就得改路径,不够灵活。
  • 拼接项目根目录:通过程序集信息拿到项目根目录,再和文件名拼接,保证路径正确:
    using System.Reflection;
    
    string assemblyDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    // 根据实际项目结构调整../的数量,确保回到根目录
    string projectRoot = Path.GetFullPath(Path.Combine(assemblyDir, @"..\..\.."));
    string fileName = Path.Combine(projectRoot, "Info.txt");
    
  • 修改IDE的工作目录:以Visual Studio为例,右键项目→属性→调试,把“工作目录”设为项目根目录(填$(ProjectDir)就行),这样程序运行时的当前目录就和你放文件的目录一致,相对路径就能正常用了。
  • 把文件复制到输出目录:右键Info.txt→属性,把“复制到输出目录”设为“如果较新则复制”或“始终复制”,这样文件会自动同步到bin/Debug或bin/Release,相对路径就能找到它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:15:32