FileStream.writeObject生成不需要的字符

时间:2012-03-09 10:57:25

标签: actionscript-3 file air character-encoding

我尝试使用FileStream.writeObject

通过AIR编写一个xml对象

我这样做:

var _file:File = File.applicationDirectory.resolvePath("test.xml");
var _xml:XML = new XML("<data><name>Testname</name><email>test@test.de</email><time>1331290186848</time></data>");

stream = new FileStream()
stream.open(_file, FileMode.WRITE);
stream.writeObject(xml);
stream.close();

不幸的是,这是结果

Å<data>
   <name>Testname</name>
   <email>test@test.de</email>
   <time>1331290186848</time>
</data>

因为我对这个过程没有任何影响,我怎么能阻止AIR写出那些奇怪的字符呢?

谢谢你!

1 个答案:

答案 0 :(得分:4)

您应该将XML作为String写入文件。现在你把它写成一个XML对象,看起来很像一个String,但有一些额外的信息。我认为开头的奇怪字符代表字符串的长度。

使用writeUTFBytes()代替writeObject()。

所以替换

stream.writeObject(xml);

stream.writeUTFBytes(xml.toXMLString());

writeUTF()也不会这样做:如果你阅读the docs,你会看到它也将String的长度写为第一个字符。