如何在C#以上的目录中获取文件地址?

时间:2018-11-30 15:32:51

标签: c# file filepath

我想从当前目录的文件中获取地址,例如: 我位于MiProyecto/Socket/bin/Debug中,我想从运行在MiProyecto\Ranking\Ranking.xml上的应用程序转到Socket/bin/Debug

我一直在寻找一种通用的方法,但是我没有找到具体的解决方案。我不想使用 OpenFileDialog

我唯一知道的是使用string path = Application.StartupPath;获取正在运行的应用程序的当前目录,但是我不知道如何从该路径爬升至Ranking\Ranking.xml

我也尝试过:

string fullPath = Path.Combine(Application.StartupPath, @"..\"); Console.WriteLine("\n\n"+fullPath);

屏幕输出:

enter image description here

2 个答案:

答案 0 :(得分:1)

fullPath写入控制台后,您没有执行任何操作。您需要将fullPath附加到SerializadorRanking调用中-即SerializadorRanking(fullPath +“ Ranking.xml”);

string fullPath = Path.Combine(Application.StartupPath, @"..\"); 
Console.WriteLine("\n\n"+fullPath);
serializadorRanking = new SerializadorRanking(fullPath + @"Ranking\Ranking.xml");

相反,您可以通过Path.Combine函数附加整个字符串。

string fullPath = Path.Combine(Application.StartupPath, @"..\Ranking\Ranking.xml");
serializadorRanking = new SerializadorRanking(fullPath);

答案 1 :(得分:1)

获取 MiProyecto 文件夹路径,然后与 /Ranking/Ranking.xml

合并的通用方法
using System;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string startupPath = Application.StartupPath;
            Console.WriteLine(startupPath); // .../MiProyecto/Socket/bin/Debug

            string folderName = "MiProyecto";
            DirectoryInfo di = new DirectoryInfo(startupPath);

            // Loop until found MiProyecto folder
            while (true)
            {
                if (di.Parent.FullName.EndsWith(folderName))
                {
                    break;
                }
                else
                {
                    di = new DirectoryInfo(di.Parent.FullName);
                }
            }

            Console.WriteLine(di.Parent.FullName); // .../MiProyecto
        }
    }
}

通过这种方式,您将始终获得 MiProyecto 文件夹的路径

MiProyecto/A/B/C/D/E/Debug 
MiProyecto/Ranking/Ranking.xml