我正试图使用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);
当我静态地传递它时,它会以这种格式工作,但当我想静态地传递时,它不会接受它。
您的路径以@
符号开头。我认为您不希望这样做。我怀疑您试图使用逐字逐句的字符串文字,但有点困惑。我怀疑你只是想:
var path = string.Format(@"C:Objects{0}.xml", aRecord.GetHashCode());
或者,您可以先计算出文件名,然后使用Path.Combine
根目录。
请注意,在文件名中使用GetHashCode
几乎总是一个坏主意。它不能保证是唯一的,除了作为平等检查的第一次通过之外,它没有真正的意义。目前还不清楚你想要实现什么,但几乎可以肯定的是,这是一种错误的方法。
此外,您应该为您的作者使用using
语句:
using (var writer = File.CreateText(path))
{
serializer.Serialize(writer, movie);
}