我想将我的日志文件保存到当前目录的根目录。
现在我的文件路径是 “path”:“%temp%\ logs \ log.txt” 这工作正常,但我想将其保存到当前目录的根目录。 例如,说我的应用程序路径是d:\ SampleApp \ Myapp,我希望我的日志保存到d:\ logs \ log.txt 驱动器“d”可能会在部署时发生变化。所以想要使用它的相对驱动器。 我想通过appsettings.json解决这个问题,而不是通过编码。 TIA
答案 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网站的此页面上,您可以获得有关它的更多信息:
答案 1 :(得分:0)
试试这个(使用System.IO):
string root = Path.GetPathRoot(System.Reflection.Assembly.GetEntryAssembly()。Location); 此外,您可以使用Path.GetFullPath()而不是Path.GetPathRoot()并从字符串中删除不需要的部分,而无需硬编码文件夹名称 并将您的文件夹附加到它。