【问题标题】:How to read/write a file from a relative path in C#, WPF?如何从 C#、WPF 中的相对路径读取/写入文件?
【发布时间】:2022-12-18 09:36:55
【问题描述】:

它仅在我使用绝对路径时有效,但我希望它是相对的。我试过 AppDomain.CurrentDomain.BaseDirectory 但它转到了bin文件夹文件不在的地方,它们在项目文件夹.

我应该怎么办?

try
{
   using StreamReader reader = new("input.txt");
   using StreamWriter writer = new("resources\\output.txt");
   string line;

   while ((line = reader.ReadLine()) != null)
   {
      writer.WriteLine(line);
   }
      reader.Close();
      writer.Close();
}
catch (FileNotFoundException)
{
   MessageBox.Show("File Not Found");
}

【问题讨论】:

  • 将文件添加到您的解决方案中,并针对它们的每个属性要求将它们复制到输出目录(总是或更新)对您有用吗?因为通常你只部署 bin/Debug 文件夹中的内容,而不是上面的内容。
  • 我建议尝试使用Path.GetFullPath(...),这样您就可以看到您的相对路径实际解析为什么。
  • 我要读取或写入的所有文件都必须在bin文件夹
  • 是的,正在运行的应用程序不知道任何项目文件夹。看我的回答。

标签: c# wpf


【解决方案1】:

它们位于项目文件夹中。

好吧,您需要了解在运行时没有“项目文件夹”这样的东西。

例如,您可以在安装了 Visual Studio 的机器上开发您的应用程序,并将源代码文件保存在某个目录中。然后构建应用程序并将编译后的二进制文件部署到另一台没有源代码文件或构建工具的机器上。

您应该将您尝试读取和写入的文件复制到可执行文件的输出目录,以使您的相对路径起作用。

在 Visual Studio 的解决方案资源管理器中选择文件,并将它们的 Build Action 设置为 Content,将 Copy to Output Directory 设置为 Copy if newer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多