在c#中获取文件路径

时间:2013-03-20 09:41:51

标签: c# winforms

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

但是之前的路径是动态的,任何人都可以给我一个想法吗?

3 个答案:

答案 0 :(得分:4)

不清楚哪条路径是哪条,但尝试用

“玩”

Assembly.GetExecutingAssemblyPath.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);

答案 1 :(得分:1)

您想从相对路径获取完整路径吗?

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

e.g。

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

答案 2 :(得分:1)

有几种解决方案可以解决加载应用程序附带的图像的基本问题:

解决方案1:资源
如果没有必要存在图像文件,您只需将图像添加到程序的资源中并将其分配给设计器。然后不必部署映像文件。

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

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

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

    此代码获取程序集文件夹并为名为“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");