【发布时间】:2015-03-06 15:18:33
【问题描述】:
有没有办法在没有 BOM 的情况下使用 FileStream 编写 Stream? 我在这里做的是首先将 XmlNode 转换为 Stream 并稍后将流写入文件。我需要它采用 Stream 的形式才能与我的函数互操作。我可以用另一种方式来做,但如果可能的话,我想用这种方式来做。
Stream^ XmlToStream(XmlNode^ Node)
{
Stream^ stream = gcnew MemoryStream();
XmlDocument^ xmlDoc = gcnew XmlDocument();
xmlDoc->PreserveWhitespace = true;
xmlDoc->LoadXml(Node->OuterXml);
xmlDoc->Save(stream);
//OR THIS:
//TODO: Handle exceptions
// XmlWriterSettings^ settings = gcnew XmlWriterSettings();
// settings->Encoding = System::Text::Encoding::UTF8;
// settings->OmitXmlDeclaration = true;
// settings->NewLineChars = "\n";
// XmlWriter^ xwriter = XmlWriter::Create(stream, settings);
// Node->WriteTo(xwriter);
// xwriter->Close();
return stream;
}
void StreamToFile(Stream^ DataStream, String^ FilePath)
{
FileStream^ fileStream = gcnew FileStream(FilePath, FileMode::Create);
if (DataStream->CanSeek)
{
DataStream->Seek(0, SeekOrigin::Begin);
}
DataStream->CopyTo(fileStream);
fileStream->Close();
}
【问题讨论】:
标签: c++-cli filestream byte-order-mark