0

我正在尝试使用 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);

当我静态传递它时,它会使用这种格式,但是当我想动态传递它时,它不接受它。

4

1 回答 1

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);
}
于 2013-07-04T09:32:06.983 回答