我正在尝试将\
替换为\\
,并且它适用于除我需要使用的特定变量以外的所有内容。引发错误Illegal characters in path.
可能是因为它认为\ t是字符,该字符是制表符,因此不允许在路径中使用
使用Newtonsoft.Json将变量从json文件加载到类中
public class WebsiteConfig
{
public string Name { get; set; }
public string Directory { get; set; }
}
我已经尝试过var escapedir = Regex.Replace(Directory, @"\\", @"\");
和任何可能形成var escapedir = Directory.Replace("\", "\\");
的方式。
尝试Regex.Replace("C:\test", @"\", @"\\");
(C:\ test与Directory中完全相同),然后在一个foreach中,我试图将Directory与文件名结合在一起。
当前代码的“转储”:
var json = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "config.json"));
_config = JsonConvert.DeserializeObject<Config>(json);
foreach(WebsiteConfig website in _config.WebsiteConfigList)
{
for (int i = 0; i <= 9; i++)
{
string dir = website.Directory;
string escapedir = Regex.Replace(dir, @"\\", @"\\\\");
var path = Path.Combine(escapedir, "Backedup_" + i.ToString() + ".txt");
}
}
和config.json:
{
"WebsiteConfigList": [
{
"Name": "test",
"Directory": "C:\test"
}
]
}
config.json =>当您将路径放入json中时,双斜杠将减少您读取应用程序的麻烦。
{
"WebsiteConfigList": [
{
"Name": "test",
"Directory": "C:\\test"
}
]
}
在您的函数中,您可以反序列化到您的WebsiteConfig类,并且您不需要检查正确的路径,因为这是记录器应用程序将从json文件加载文件夹路径的方式。
var json = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "config.json"));
_config = JsonConvert.DeserializeObject<Config>(json);
foreach(WebsiteConfig website in _config.WebsiteConfigList)
{
for (int i = 0; i <= 9; i++)
{
string dir = website.Directory;
var path = Path.Combine(dir, "Backedup_" + i.ToString() + ".txt");
}
}