Deleting objects in a TFile

From: Glen R. Salo (gsalo@mrcday.com)
Date: Wed Feb 02 2000 - 18:36:26 MET


Is there a way to delete objects from a TFile and free up the disk memory?  The
example given below illustrates the problem - even though I delete the TVector
object, the size of the file does not decrease, and if I write the TVector to
the file again, the file grows in size.

Thanks for your help,

Glen

root [0] TFile f("test.root","RECREATE");
root [1] f.ls();
TFile**         test.root       
 TFile*         test.root       
root [2] .!ls -l test.root
-rw-r--r--   1 gsalo    gsalo         148 Feb  2 12:30 test.root
root [3] TVector v(1000);
root [4] v.Write("vector");
root [5] f.ls();
TFile**         test.root       
 TFile*         test.root       
  KEY: TVector  vector;1        Vector class
root [6] .!ls -l test.root
-rw-r--r--   1 gsalo    gsalo         250 Feb  2 12:30 test.root
root [7] f.Delete("*;*");
root [8] f.ls();
TFile**         test.root       
 TFile*         test.root       
root [9] .!ls -l test.root
-rw-r--r--   1 gsalo    gsalo         252 Feb  2 12:30 test.root
root [10] v.Write("vector");
root [11] f.ls();           
TFile**         test.root       
 TFile*         test.root       
  KEY: TVector  vector;1        Vector class
root [12] .!ls -l test.root 
-rw-r--r--   1 gsalo    gsalo         350 Feb  2 12:31 test.root



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:18 MET