我想从当前目录的文件中获取地址,例如:
我位于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);
屏幕输出:
答案 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