如何设置当前目录根目录的文件路径

时间:2018-05-10 03:29:04

标签: c# windows

我想将我的日志文件保存到当前目录的根目录。

现在我的文件路径是 “path”:“%temp%\ logs \ log.txt” 这工作正常,但我想将其保存到当前目录的根目录。 例如,说我的应用程序路径是d:\ SampleApp \ Myapp,我希望我的日志保存到d:\ logs \ log.txt 驱动器“d”可能会在部署时发生变化。所以想要使用它的相对驱动器。 我想通过appsettings.json解决这个问题,而不是通过编码。 TIA

2 个答案:

答案 0 :(得分:0)

要设置可以保存文件的根文件夹,您需要指定没有根目录的方向,然后使用Combine()中包含的Path类中的方法System.IO

  

要获得所有驱动器,您可以使用DriveInfo类   包含在System.IO命名空间及其属性Name中   根目录。

     

例如:

using System.IO;
...

...
DriveInfo[] allDrives = DriveInfo.GetDrives();

foreach(DriveInfo x in allDrives)
{
    Console.WriteLine(x.Name);
}

// Console: "C:\"
// Console: "D:\"

然后您可以将根目录路径与文件路径组合如下:

Path.Combine(rootPath, filePathWithoutRoot);

要获取路径的根目录,可以使用命名空间GetPathRoot()中包含的Path类中的System.IO方法。此方法从作为string参数传递的路径返回根目录。

  

在Microsoft MSDN的这个page,您可以获得更多信息   这个如何使用它的例子:

string path = @"\mydir\"; 
string fileName = "myfile.ext"; 
string fullPath = @"C:\mydir\myfile.ext"; 
string pathRoot;

pathRoot = Path.GetPathRoot(fullPath); Console.WriteLine("GetPathRoot('{0}') returns '{1}'", fullPath, pathRoot);

// This code produces output similar to the following: 
//
// GetPathRoot('C:\mydir\myfile.ext') returns 'C:\'

在Microsoft MSDN网站的此页面上,您可以获得有关它的更多信息:

Path.GetPathRoot Method (String)

答案 1 :(得分:0)

试试这个(使用System.IO):

string root = Path.GetPathRoot(System.Reflection.Assembly.GetEntryAssembly()。Location); 此外,您可以使用Path.GetFullPath()而不是Path.GetPathRoot()并从字符串中删除不需要的部分,而无需硬编码文件夹名称 并将您的文件夹附加到它。