【问题标题】:File.ReadAllText throws DirectoryNotFoundExceptionFile.ReadAllText 抛出 DirectoryNotFoundException
【发布时间】:2018-08-24 13:46:33
【问题描述】:

我有一段 C# 代码正试图打开一个 .txt 文件。此文本文件与正在运行的代码块位于同一项目中。此时,我正在尝试使用以下命令打开 .txt 文件:

var filePath = @"\Status\new.txt";
try 
{
    var content= File.ReadAllText(filePath);
} 
catch (DirectoryNotFoundException)
{
    Console.WriteLine("Unable to find " + filePath);
}

当这段代码运行时,我得到一个DirectoryNotFoundException。控制台显示:

找不到\Status\new.txt

我将“new.txt”文件的“复制到输出目录”属性更改为“如果较新则复制”。我可以在“bin/Debug/netcoreapp2.1/Status/”目录下看到“new.txt”文件。

我目前正在通过一个 MSTest 项目运行此代码。我不明白为什么我会收到这个异常。

【问题讨论】:

  • 打印异常,查看找不到的完整路径。
  • ReadAllText 可能需要完整路径
  • 尝试删除第一个斜线。

标签: c#


【解决方案1】:

\Status\new.txt 将尝试从磁盘根目录加载new.txt 目录中的new.txt。根据您的描述,这不是文件所在的位置。

如果文件与可执行文件位于同一文件夹中,则只需要 new.txt,如果它位于可执行文件所在的子目录之外,则 .\status\new.txt 应该可以工作。

【讨论】:

  • 我不确定.\status\new.txt。根据this discussionPath.Combine(TestContext.DeploymentDirectory, "Status", "new.txt")Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Status", "new.txt") 看起来更安全。
猜你喜欢
  • 2017-11-12
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 2017-06-20
  • 1970-01-01
  • 2018-12-13
  • 1970-01-01
相关资源
最近更新 更多