[英]Binary writer inserts extra character in writing
嗨,我正在尝试将xml保存到文件中,并且在文件开头始终添加不同的字符。
我有的代码是
string strCXML2;
strCXML2 = "<input type=" + "\"" + "hidden" + "\"" + " name=" + "\"" + "cxml-urlencoded" + "\"" + " value=" + "\"";
strCXML2 = strCXML2 + "<!DOCTYPE cXML SYSTEM " + "\"" + "http://xml.cxml.org/schemas/cXML/1.2.023/cXML.dtd" + "\"" + ">";
//<snip>
BinaryWriter bw5 = new BinaryWriter(File.Open(Server.MapPath("~/data/test/test19.xml"), FileMode.OpenOrCreate))
bw5.Write(strCXML2);
bw5.Close();
每次是其他垃圾字符时,此返回的xml“}”中的后续文件
}<input type="hidden" name="cxml-urlencoded" value="<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.023/cXML.dtd">
有什么想法为什么要这样做吗?
它正在写入的字符是字符串的编码长度,因为:它不希望写入文本文件。 BinaryWriter
编写... binary 。 它以一种编码的二进制方式写入字符串,可以使用BinaryReader.ReadString
读回。
相反,只使用:
File.WriteAllText(path, strCXML2);
BinaryWriter.Write(string)
方法的文档解释了所有这些:
长度前缀字符串表示字符串的长度,方法是在字符串前面加上包含该字符串长度的单个字节或单词。 此方法首先将字符串的长度写为UTF-7编码的无符号整数,然后使用BinaryWriter实例的当前编码将那么多字符写入流中。
并有帮助地链接到有关编写文本文件的单独部分
如果要使用BinaryWriter
,则首先以ASCII或Unicode UTF-16对其进行编码。 您的XML应该指定其使用的编码,并将特定编码用于Binary Writer。
byte[] textbyte = Encoding.Unicode.GetBytes(text);`
那应该删除前两个垃圾字符。 我确实推荐WriteAllText()
方法。
如果您需要在textfile(offset)
的特定区域中写入,请使用Binarywriter
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.