【问题标题】:How to get full path of file using File.WriteAllText in C#?如何在 C# 中使用 File.WriteAllText 获取文件的完整路径?
【发布时间】:2021-01-05 13:22:42
【问题描述】:

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

【问题讨论】:

    标签: c# filepath appsettings configurationmanager textwriter


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-12-06
        • 1970-01-01
        • 1970-01-01
        • 2016-03-31
        • 2015-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-11
        相关资源
        最近更新 更多