如何在C#中获取上面目录中的文件地址?
我想从当前目录的文件中获取地址,例如: 我位于如何在C#中获取上面目录中的文件地址?,c#,file,filepath,C#,File,Filepath,我想从当前目录的文件中获取地址,例如: 我位于MiProyecto/Socket/bin/Debug中,我想从运行在Socket/bin/Debug上的应用程序转到MiProyecto\Ranking\Ranking.xml 我一直在寻找一种通用的方法,但还没有找到具体的解决办法。我不想使用OpenFileDialog 我只知道,要获取正在运行的应用程序的当前目录,请使用string path=application.StartupPath但我不知道如何从这条路爬到Ranking\Ranking
MiProyecto/Socket/bin/Debug
中,我想从运行在Socket/bin/Debug
上的应用程序转到MiProyecto\Ranking\Ranking.xml
我一直在寻找一种通用的方法,但还没有找到具体的解决办法。我不想使用OpenFileDialog
我只知道,要获取正在运行的应用程序的当前目录,请使用string path=application.StartupPath
但我不知道如何从这条路爬到Ranking\Ranking.xml
我也试过:
string fullPath=Path.Combine(Application.StartupPath,@.\”代码>
Console.WriteLine(“\n\n”+完整路径)代码>
屏幕上的输出:
将完整路径写入控制台后,您将无法使用它执行任何操作。您需要将fullPath附加到SerializadorRanking调用——即SerializadorRanking(fullPath+“Ranking.xml”)
相反,您可以通过Path.Combine
函数附加整个字符串
string fullPath = Path.Combine(Application.StartupPath, @"..\Ranking\Ranking.xml");
serializadorRanking = new SerializadorRanking(fullPath);
在将fullPath写入控制台后,您没有对其执行任何操作。您需要将fullPath附加到SerializadorRanking调用——即SerializadorRanking(fullPath+“Ranking.xml”)
相反,您可以通过Path.Combine
函数附加整个字符串
string fullPath = Path.Combine(Application.StartupPath, @"..\Ranking\Ranking.xml");
serializadorRanking = new SerializadorRanking(fullPath);
获取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
获取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
使用Path.Combine()
和。\
上一个目录?此文件是否始终位于可执行文件的相同相对路径中?如果您的应用程序对文件系统文件夹有依赖性,该文件夹可能会从一个执行环境更改为下一个,那么您可能会考虑为文件夹设置一个配置值。请尝试使用启动路径创建一个新的System .I.DeCurryInFor实例。该对象应具有.Parent属性或类似属性,以便向上导航。@ne1410s请给我举个例子好吗?@CodeCaster我不工作,另一种解决方案?使用Path.Combine()
和。\
向上移动一个目录?此文件是否始终位于可执行文件的相同相对路径中?如果您的应用程序对文件系统文件夹有依赖性,该文件夹可能会从一个执行环境更改为下一个,那么您可能会考虑为文件夹设置一个配置值。请尝试使用启动路径创建一个新的System .I.DeCurryInFor实例。该对象应具有.Parent属性或类似属性,以便向上导航。@ne1410s请给我举个例子好吗?@CodeCaster我不工作,另一种解决方案?谢谢。像那样的东西看起来像汉克斯。看起来像这样的东西