【问题标题】:C# get relative path of resources folderC#获取资源文件夹的相对路径
【发布时间】:2020-10-31 15:09:51
【问题描述】:

我想访问一个 .txt 文件,该文件存储在我项目的资源文件夹中,所有导入的图片也都存储在该文件夹中。 我想使用相对路径之类的东西,因为每个用户都会在他的电脑上的其他地方保护他的程序,但是与程序文件夹相比,资源文件夹总是在同一个地方。

我尝试使用这个:displayText = System.IO.File.ReadAllText("Resources\\startmessages.txt"); 但这不起作用。 我收到此错误消息:System.IO.DirectoryNotFoundException:,它还列出了 .txt 的非相对路径,所以我不明白,为什么它无法读取它。

感谢您的帮助。

【问题讨论】:

  • 那么Resources 文件夹与应用程序运行的位置相同吗?您确认该文件夹存在吗?
  • 它总是自动存在的,当你创建你的项目时。我应该指定,我正在创建一个“Windows 窗体应用程序”。该文件夹是您导入项目资源(如背景图片、按钮、表单、图片框等)的文件夹
  • 您不会在该文件夹中导入资源。 Resources 由 Visual Studio 使用,它并不意味着您的应用程序可以访问。事件虽然您可以在其中添加文件(这将在用作嵌入式资源的内容与其他原因之间造成混淆),但在部署时该文件夹将不可用.如果您想组织项目目录中的文件,请将文件夹添加到解决方案资源管理器并定义这些文件夹包含的文件的 Build Action

标签: c# directory path resources


【解决方案1】:

@ChetanRanpariya 试图告诉您的是,您的程序 构建 在另一个文件夹中,而不是您的文件夹 Resources 所在的文件夹。所以你已经明确告诉你的文件Resources\startmessages.txt 在构建过程中复制自己,所以它被复制到另一个文件夹。假设您使用的是 Visual Studio,您必须右键单击您的文件并将Copy To Output Directory 设置为true。它的相对文件夹路径 (Resources\) 将被接管。根据配置和框架,您可以在 bin 文件夹中的某处找到您的构建文件夹。 :)

【讨论】:

    【解决方案2】:

    可执行文件所在的当前路径

    Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).FullName
    

    解决方案路径

    如果你使用Visual Studio,需要访问解决方案目录下的文件夹,可以使用.Parent方法,

    Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.FullName
    

    Path.Combine 的使用

    获得资源文件夹的位置后,使用 Path.Combine 获取读取文件/内容等的位置

    Path.Combine(Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.FullName, "Resources\\startMessages.txt")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      相关资源
      最近更新 更多