如何在 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);
我在设置文件中添加了 <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);