我已经在设置文件中添加了密钥作为<add key="Test.Directory" value="Data/Test/XML_Files" />
。我需要将此路径传递到file.WriteAllText并连接为c:/Data/Test/XML_Files/TestFile
,但该路径只使用到c:/Data/Test/XML_Files
。请帮助连接并获得完整路径
var xmlFilePath = ConfigurationManager.AppSettings["Test.Directory"];
string _xmlFileName = new DirectoryInfo(Path.GetFullPath(xmlFilePath));
string Records = string.Empty;
using (StringWriter Writer = new Utf8StringWriter())
{
xmlSerializer.Serialize(Writer, itemList);
Records = Writer.ToString();
}
File.WriteAllText(string.Format(@_xmlFileName + "''TestFile" + ".dat" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + Guid.NewGuid().ToString().Substring(1, 5) ), Records);
错误似乎出现在TestFile常量前反斜杠周围添加的引号中。但我强烈建议你在构建文件名时更加清楚,并使用Path。组合创建最终的完整文件名
string timestamp = DateTime.Now.ToString("yyyyMMddHHmmssfff") +
Guid.NewGuid().ToString().Substring(1, 5);
string file = Path.Combine(_xmlFileName, $"TestFile-{timestamp}.dat");
File.WriteAllText(file, Records);
当然,您可以将所有内容放在一行中,但这对您的性能来说并不是一个明显的优势,而且会使理解代码变得非常困难。(例如,请注意,您的原始代码在扩展后有datetime/guid部分,这可能是由于表达式的复杂性造成的疏忽(
也许你可以试试这样的东西?:
var folderName = Path.Combine(@_xmlFileName, "TestFile");
var fileName = $@"{folderName}{DateTime.Now:yyyyMMddHHmmssfff}.dat";
File.WriteAllText(fileName, txRrcWellRecords);