簡體   English   中英

從appsetting.json讀取文件路徑

[英]Read the file path from appsetting.json

我有一個在 asp.net 內核中開發的 webapi。 在代碼中,我需要創建 xml 個文件並將其保存到共享驅動器。由於帶有轉義序列的路徑,我遇到了問題。

在Json中,c#逐字不起作用,所以要指定路徑我需要使用“\”所以我的路徑變成了\root\folder1\folder2,當我在c#中讀取這個時,然后嘗試將“\”替換為“ " 它不起作用,它刪除了兩個斜杠。 我嘗試使用不同的字符,如 '+' 或 '-' 並將其替換為 @"" 它仍然添加兩個反斜杠。 當路徑中有兩個反斜杠時 windows 找不到路徑。 所以它不工作。 似乎沒有任何效果。

我嘗試使用正斜杠 \root/folder1/folder2 然后根據正斜杠拆分並再次使用數組構建路徑但即使在這里它也添加了兩個反斜杠

  var path = directoryList[0].Value.Split('/');
                foreach (string item in path)
                {
                    filePath +=(string.Format(@"{0}\",item));
                }

對此有何建議?? 如何從 appsetting.json 讀取路徑並刪除雙反斜杠,以便識別路徑並創建文件。

當字符串正確使用轉義字符時,您不需要使用逐字標識符

直接使用它而不使用'@',或者如果您需要先添加一些根目錄,請使用路徑組合

string path = directoryList[0].Value; // use this dirctly if it full qulified path
string fullPath = Path.Combine(@"c:\anyRoot",path); //add some root if it a partial path

您是否考慮過讓您的生活更輕松,只是發誓放棄由 MS-DOS 在 1981 年流行的反斜杠字符文件路徑? 這在當時是一個不幸的選擇,而且總是造成困難。

您可以安全地使用“/”作為 Windows 文件路徑中的路徑分隔符,因此

   var streamReader = new StreamReader("/Users/gbsil/src/filepath/hello.txt");

相當於

   streamReader = new StreamReader("\\Users\\gbsil\\src\\filepath\\hello.txt");

也相當於

streamReader = new StreamReader(@"\Users\gbsil\src\filepath\hello.txt");

如果你想要一個驅動器號

然后

streamReader = new StreamReader("c:/Users/gbsil/src/filepath/hello.txt");

工作方式與

streamReader = new StreamReader("c:\\Users\\gbsil\\src\\filepath\\hello.txt");

在此處查看文檔: Windows 系統上的文件路徑格式

歷史記錄:Unix 總是使用正斜杠“/”作為分隔符,就像 C 語言一樣,所以反斜杠“”總是與此沖突。 '' 在 C 語言中用作轉義字符,這使事情變得更糟 - 將 '' 放入需要寫入 '\' 的字符串中。 需要運行多個平台的程序,如 JavaScript 使用 C 語言約定的“/”分隔符和“”轉義字符,因為它們是用 Z0D61F8370CAD1D412F80B84D143E125 編寫的。 有時使用反斜杠文件路徑分隔符是有原因的,但如果你只在強制時這樣做,你的生活會更輕松。

我讓它工作了..所以我使用的是 xmldoc.Save() 並且默認情況下使用本地目錄根目錄,所以我的路徑是 D:/localfoldername\shared network path\。 所以,這條線似乎已經修復了它
xmldoc.Save("\{0}",path) ,現在路徑為 \shared Network Path\ 並且我的文件保存得很好。

感謝所有的投入。

對於 do.net 核心 6

  1. 在 PM 上安裝 serilog.extensions.logging.file

  2. 在 Program.cs 中

app.Services.GetService().AddFile(builder.Configuration["Logging:LogFilePath"].ToString());
  1. 在 appsettings.json
"Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    },
    "LogFilePath": "D:\\Logs\\CSMonitor_{Date}.txt"
}
   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM