我正在尝试使用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);
当我正在传递静态时,它会以这种格式发挥作用但是当我想要它时,它不会接受它。
答案 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);
}