在c#中获取文件路径

本文关键字:文件 路径 获取 | 更新日期: 2023-09-27 18:04:44

我想使用图像smile.jpg。我已经保存了jpg文件到位置../project/Cam/bin/Debug/smile.jpg(路径的这一部分是静态的)

但是前面的路径是动态的,谁能给我一个想法?

在c#中获取文件路径

不是很清楚哪条路径是哪条,但试着"玩"一下

组装。GetExecutingAssembly和Path。GetDirectoryName

//THIS RETURNS YOU A FOLDER WHERE YOUR APPLICATION RUNS
var exeutingFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

//COMBINE EXECUTING FOLDER WITH RELATIVE PATH YOU HAVE
var resultinPath = Path.Combine(executingFolder, YOUR_PATH);

对于加载应用程序附带的图像的潜在问题,有几种解决方案:

方案一:资源
如果图像文件不是必需的,您可以简单地将图像添加到程序的资源中,并在设计器中分配它。这样就不需要部署映像文件了。

为此,将图像文件添加到项目中,然后将其拖动到项目属性的"资源"选项卡中。

解决方案2:文件复制到输出文件夹
也许您希望将图像放在输出文件夹中,并在运行时从文件中加载它们。然后你应该真正避免对文件夹做任何假设,而是做以下事情:

  1. 将图像文件添加到项目中,并将其构建类型设置为"none",并将它们始终复制到输出文件夹中。如果你构建你的项目,映像文件现在应该在/bin/debug/bin/release
  2. 在您的代码中,使用程序集文件夹构建到文件的路径

下面的代码获取程序集文件夹,并为名为"smiley.png"的图像组装一个路径名:

string assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
string smileyPath = Path.Combine(assemblyPath, "smiley.png");

如果您将图像添加到项目中的文件夹中,则该文件夹也将在输出文件夹中创建。例如:如果你把你的图片放到一个文件夹"images"中,bin/debugbin/release中会有一个文件夹"images"。在这种情况下,您可以放心地假设以下代码可以工作:

string assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
string imagePath = Path.Combine(assemblyPath, "images");
string smileyPath = Path.Combine(imagePath, "smiley.png");

要从相对路径中获取完整路径吗?

如果是,可以使用System.IO.Path.GetFullPath()

string fullPath = System.IO.Path.GetFullPath("../project/Cam/bin/Debug/smile.jpg");