StreamWriter参数不合法

本文关键字:不合法 参数 StreamWriter | 更新日期: 2023-09-27 18:21:04

我正试图使用StreamWriter通过方法序列化对象,但不知何故,我无法动态定义文件的路径。

示例:

public void SerializeToXML(Record aRecord)
{
  XmlSerializer serializer = new XmlSerializer(typeof(Movie));
  var path = string.Format("@'"{0}''{1}.xml'"", "C:''Objects", aRecord.GetHashCode());
  TextWriter textWriter = new StreamWriter(path);
  serializer.Serialize(textWriter, movie);
  textWriter.Close();
}

然后它说:"Illegal characters in path" on the line :TextWriter textWriter = new StreamWriter(path);

当我静态地传递它时,它会以这种格式工作,但当我想静态地传递时,它不会接受它。

StreamWriter参数不合法

您的路径以@符号开头。我认为您不希望这样做。我怀疑您试图使用逐字逐句的字符串文字,但有点困惑。我怀疑你只是想:

var path = string.Format(@"C:'Objects'{0}.xml", aRecord.GetHashCode());

或者,您可以先计算出文件名,然后使用Path.Combine根目录。

请注意,在文件名中使用GetHashCode几乎总是一个坏主意。它不能保证是唯一的,除了作为平等检查的第一次通过之外,它没有真正的意义。目前还不清楚你想要实现什么,但几乎可以肯定的是,这是一种错误的方法。

此外,您应该为您的作者使用using语句:

using (var writer = File.CreateText(path))
{
    serializer.Serialize(writer, movie);
}