Как установить путь к файлу в корне текущего каталога - PullRequest
0 голосов
/ 10 мая 2018

Я хочу сохранить файл журнала в корне текущего каталога.

Прямо сейчас мой путь к файлу "путь": "% temp% \ logs \ log.txt" это работает нормально, но я хочу сохранить его в корне текущего каталога. Например, скажите, что мой путь к приложению - d: \ SampleApp \ Myapp, и я хочу, чтобы мой журнал сохранялся в d: \ logs \ log.txt. диск «d» может измениться при развертывании. Поэтому хочу сделать это относительно того, какой диск когда-либо используется. Я хочу решить эту проблему через appsettings.json, а не через кодирование. ТИА

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Попробуйте (используя System.IO):

string root = Path.GetPathRoot (System.Reflection.Assembly.GetEntryAssembly (). Местоположение); Кроме того, Вы можете использовать Path.GetFullPath () вместо Path.GetPathRoot () и удалить ненужную часть из строки без жесткого кодирования имени папки. И добавьте в него свою папку.

0 голосов
/ 10 мая 2018

Чтобы установить корневую папку, в которой вы можете сохранить файл, вам нужно указать направление без корневого каталога, а затем использовать метод 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 вы можете получить дополнительную информацию и этот пример того, как его использовать:

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 (String)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...