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 >