在c#中获取文件路径
本文关键字:文件 路径 获取 | 更新日期: 2023-09-27 18:04:44
我想使用图像smile.jpg
。我已经保存了jpg文件到位置../project/Cam/bin/Debug/smile.jpg(路径的这一部分是静态的)
但是前面的路径是动态的,谁能给我一个想法?
不是很清楚哪条路径是哪条,但试着"玩"一下
组装。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:文件复制到输出文件夹
也许您希望将图像放在输出文件夹中,并在运行时从文件中加载它们。然后你应该真正避免对文件夹做任何假设,而是做以下事情:
- 将图像文件添加到项目中,并将其构建类型设置为"none",并将它们始终复制到输出文件夹中。如果你构建你的项目,映像文件现在应该在
/bin/debug
或/bin/release
。 在您的代码中,使用程序集文件夹构建到文件的路径
下面的代码获取程序集文件夹,并为名为"smiley.png"的图像组装一个路径名:
string assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
string smileyPath = Path.Combine(assemblyPath, "smiley.png");
如果您将图像添加到项目中的文件夹中,则该文件夹也将在输出文件夹中创建。例如:如果你把你的图片放到一个文件夹"images"中,bin/debug
或bin/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");