StreamWriter参数不合法

时间:2013-07-04 09:29:36

标签: c# serialization stream

我正在尝试使用StreamWriter通过方法序列化Object,但不知怎的,我无法动态定义文件的路径。

示例:

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);

当我正在传递静态时,它会以这种格式发挥作用但是当我想要它时,它不会接受它。

1 个答案:

答案 0 :(得分:3)

您的路径以@开头。我不认为你想要它。我怀疑你是尝试使用逐字字符串文字,但有点困惑。我怀疑你只是想要:

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

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

请注意,在文件名中使用GetHashCode几乎总是一个坏主意。它不能保证是唯一的,除了作为平等检查的第一遍之外,它没有任何实际意义。目前尚不清楚你想要达到的目标,但这几乎肯定是错误的做法。

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

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