如何在 C# 中使用 File.WriteAllText 获取文件的完整路径?

How to get full path of file using File.WriteAllText in C#?

我在设置文件中添加了 <add key="Test.Directory" value="Data/Test/XML_Files" /> 键。我需要将此路径传递给 File.WriteAllText 并连接为 c:/Data/Test/XML_Files/TestFile 但该路径仅在 [=14= 之前被采用].请帮忙拼接并获取完整路径

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

也许你可以试试这样的方法?:

var folderName = Path.Combine(@_xmlFileName, "TestFile");
var fileName = $@"{folderName}\{DateTime.Now:yyyyMMddHHmmssfff}.dat";
File.WriteAllText(fileName, txRrcWellRecords);