Re: problem updating a root file

Rene Brun (Rene.Brun@cern.ch)
Tue, 28 Jul 1998 11:14:06 +0200


Thanks for reporting this problem with subdirectories.
We will investigate asap.

Apologies for the long list of mails not yet answered (either private,
rootdev or roottalk). Hoping to be back to a normal situation by the end
of this week.

Rene Brun

mayer@ik1.fzk.de wrote:
>
> Dear rooters..
>
> Sorry for this question, but I checked tutorials and documentation without
> success. My problem: Once I closed a root file, im not able to write again
> into an already created directory. The newly written object appears
> in memory but not on disk. After closing and reopening the file it is lost.
> ALso I cant delete an object after reopening the file.
> So what is wrong with the following test macro??
>
> {
> gROOT.Reset();
> TFile file("test.root","recreate");
> gDirectory->mkdir("dir1");
> gDirectory->cd("dir1");
> named = new TNamed("amo","amo");
> named->Write("amo");
> gDirectory->ls();
> file->Write();
> file->Close();
> printf("------file closed-------\n");
>
> TFile file("test.root","update");
> gDirectory->cd("dir1");
> named = new TNamed("eva","eva");
> named->Write("eva");
> gDirectory->ls();
> file->Write();
> file->Close();
> printf("------file closed-------\n");
>
> TFile file("test.root","update");
> gDirectory->cd("dir1");
> gDirectory->ls();
> }
>
> and this is the output:
>
> root [0] .x new.C
> TDirectory* dir1 dir1
> KEY: TNamed amo;1 amo
> TFile Writing Name=test.root Title=
> ------file closed-------
> TDirectory* dir1 dir1
> KEY: TNamed amo;1 amo
> KEY: TNamed eva;1 eva
> TFile Writing Name=test.root Title=
> ------file closed-------
> TDirectory* dir1 dir1
> KEY: TNamed amo;1 amo
> root [1]
> --------------------------------------------------
>
> and eva is lost!
> Thanks in advance
> Hajo!