Read and Write the same file

J

JonathanB

Ok, so this is the scenario. I need to create a simple, no-frills XML
editor for non-technical users. It doesn't have to do anything fancy,
what I want is a series of text boxes with the text contents of the
elements pre-printed. Then the users can type their changes into the
text boxes and click submit and it will load the changes in. So here
is the problem, this means I need to open the same file as both read
and write. How do I do this? I'm slowly learning the DOM stuff that I
need to know to do this, but this file thing I haven't been able to
find anywhere.

JonathanB
 
G

Gabriel Genellina

Ok, so this is the scenario. I need to create a simple, no-frills XML
editor for non-technical users. It doesn't have to do anything fancy,
what I want is a series of text boxes with the text contents of the
elements pre-printed. Then the users can type their changes into the
text boxes and click submit and it will load the changes in. So here
is the problem, this means I need to open the same file as both read
and write. How do I do this? I'm slowly learning the DOM stuff that I
need to know to do this, but this file thing I haven't been able to
find anywhere.

Open the file for reading; read and parse the document; close the file.
Build form and show to the user.
Get data after user clicks OK.
Build document, open file for writing, write document, close file.

Reading and writing happen on two separate stages, and you dont have to
keep the file open all the time.
 
I

Ian Clark

Ok, so this is the scenario. I need to create a simple, no-frills XML
editor for non-technical users. It doesn't have to do anything fancy,
what I want is a series of text boxes with the text contents of the
elements pre-printed. Then the users can type their changes into the
text boxes and click submit and it will load the changes in. So here
is the problem, this means I need to open the same file as both read
and write. How do I do this? I'm slowly learning the DOM stuff that I
need to know to do this, but this file thing I haven't been able to
find anywhere.

JonathanB

Well the most straight forward approach is to read data from the file
into memory. Let the user make any changes. Then save the data back to
the file, overwriting the oringinal copy. Now, this only really works
if you're dealing with small files.

Regardless though, you never really need to have a file open for both
reading and writing. Since they occur (so it sounds) at distinct times
during your program flow, just open it twice: the first to read, the
second to write.

Ian
 
J

JonathanB

Well the most straight forward approach is to read data from the file
into memory. Let the user make any changes. Then save the data back to
the file, overwriting the oringinal copy. Now, this only really works
if you're dealing with small files.

Regardless though, you never really need to have a file open for both
reading and writing. Since they occur (so it sounds) at distinct times
during your program flow, just open it twice: the first to read, the
second to write.

Ian

That makes sense. The largest document is >10K, so it shouldn't be a
problem.
 
C

Cameron Laird

.
.
.
the file, overwriting the oringinal copy. Now, this only really works
if you're dealing with small files.
.
.
.
On modern hosts (and I persist in using WinNT on a 133 MHz machine)
"small" here can easily mean, "up to 20 megabytes".
 
G

Grant Edwards

Open the file for reading; read and parse the document; close the file.
Build form and show to the user.
Get data after user clicks OK.
Build document, open file for writing, write document, close file.

Reading and writing happen on two separate stages, and you dont have to
keep the file open all the time.

A safer way to do this is to write the new version to a
temporary file, close the temporary file, then rename it.
There's much less chance of losing data that way -- no matter
when the program or computer crashes, you've got a complete
copy one version or the other.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,042
Latest member
icassiem

Latest Threads

Top