【问题标题】:Why doesn't Path.GetFullName work in C#为什么 Path.GetFullName 在 C# 中不起作用
【发布时间】:2014-04-23 08:29:48
【问题描述】:

我需要访问我的 C# vs2010 项目中的资源文件的完整路径,以用于在下面创建 myType 变量。如果我手动输入路径为

@"C:\dir1\dir2\dir3\dir4\Source\dir5\dir6\Resources\myIcon.png"

代码工作并访问图标。但如果我使用:

var result = Path.GetFullPath("myIcon.png")  

变量结果中的值是正确目录的名称,除了两个反斜杠而不是一个,即

"C:\\dir1\\dir2\\dir3\\dir4\\Source\\dir5\\dir6\\myIcon.png" 

。问题是我需要动态得出结果(文件名变量),我无法对其进行硬编码。

我不知道我是否应该手动摆脱两个 \ 并用单个 \ 替换它?或者我错过了什么。

var result = Path.GetFullPath("myIcon.png");
ToolboxItemWrapper myType = new ToolboxItemWrapper(
    type,
    @"C:\dir1\dir2\dir3\dir4\Source\dir5\ImAdmin\dir6\myIcon.png",
    type.Name);

我正在重新编辑我的问题。我有很多问题,我在阅读了所有的 cmets 和答案后才意识到。因此,我将唯一的答案标记为答案,但是关于小心使用 GetFullPath 的一条评论也是一个有价值的反馈。谢谢你们。

【问题讨论】:

  • “我在结果中看到了”是什么意思?在 Visual Studio 调试器中?这只是显示给 // 以模拟 C# 语法,字符串中只有一个 /。
  • @user1298925,我会非常小心地打电话给Path.GetFullPath("myIcon.png");。您正在假设当前文件夹设置为某个固定路径,但它可以是任何可以更改的路径
  • 请注意,关于“如何在项目的资源文件夹中查找文件路径”有很多重复的问题...
  • 我见过他们,我使用 SO 选择了 Path.GetFullPath。

标签: c# path resources filenames


【解决方案1】:

如果您在调试器中看到\\,那么它只是调试器转义了\ 字符,因此字符串的显示方式与在代码中显示为文字的方式相同。点击小放大镜会弹出一个对话框,显示真实的、人类可读的值。

【讨论】:

  • 但还是不行,我的意思是图标没有被访问。
  • 确认一下,您在调试器中看到了它,对吧?第二,你的意思是不被访问?你可以用鼠标点击它吗?
  • 是的,我在调试器中看到它,是的,当我使用放大镜时,我确实只看到一个反斜杠。所以问题是为什么如果我输入:
猜你喜欢
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
  • 2021-10-07
  • 2020-10-02
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多