-1

我在设置文件中添加了密钥,因为<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);
4

2 回答 2

3

您的错误似乎是在 TestFile 常量之前的反斜杠周围添加的那些引号中。但我强烈建议您在构建文件名时更加清楚,并使用Path.Combine创建最终的完整文件名

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 部分,这可能是由于表达式的复杂性造成的疏忽)

于 2021-01-05T13:31:08.357 回答
0

也许你可以尝试这样的事情?:

var folderName = Path.Combine(@_xmlFileName, "TestFile");
var fileName = $@"{folderName}\{DateTime.Now:yyyyMMddHHmmssfff}.dat";
File.WriteAllText(fileName, txRrcWellRecords);
于 2021-01-05T13:33:40.247 回答