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!