Anyone got any ideas? The only thing I can think of currently is opening the 
file for read, then closing the file, then re-opening for write. It's horrible 
and hacky, but right now I'm out of suggestions.

Mark

--- In flexcoders@yahoogroups.com, "skuteboarding" <m...@...> wrote:
>
> Hi,
> 
> I'm trying to read an xml file into memory, add a node, then write over the 
> original file.
> 
> The following code works just fine (it clears the file, then writes the new 
> bytes over the top):
> 
> var stream:FileStream = new FileStream();
> stream.open(file, FileMode.UPDATE);
> stream.position = 0;
> stream.truncate();
> stream.writeUTFBytes("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
> stream.writeUTFBytes(File.lineEnding);
> stream.writeUTFBytes(xml.toXMLString());
> stream.close();
> 
> However, if I attempt to perform a read after the file has opened, the 
> position / truncate calls don't work:
> 
> var stream:FileStream = new FileStream();
> stream.open(file, FileMode.UPDATE);
> 
> var xml:XML = XML(stream.readUTFBytes(stream.bytesAvailable));
> 
> // Modify xml here
> 
> stream.position = 0;
> stream.truncate();
> stream.writeUTFBytes("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
> stream.writeUTFBytes(File.lineEnding);
> stream.writeUTFBytes(xml.toXMLString());
> stream.close();
> 
> Does anyone have any ideas why this doesn't work?
> 
> If you examine the stream, in the first code, after the call to truncate(), 
> the bytesAvailable property will read 0. But in the second code, the 
> bytesAvailable won't change (it will show the current file size).
> 
> Any ideas?
> 
> Mark
>


Reply via email to