Hi to everybody !
I have a small question ( maybe questions :
How can i list the contents of a directory ( lets say someting like >> ls somefile*.root )
the second :
it is posible to do somethin like ls *.root > directory.txt and after that to read that file line by line and make FileLIst->Add for every file read from directory.txt ?
Is an easyer way to do this ?
See class TSystem/TUnixSystem, in particular
root.cern.ch/root/htmldoc/TUnixSystem.html
root.cern.ch/root/htmldoc/TUnixS … nDirectory
root.cern.ch/root/htmldoc/TUnixS … etDirEntry
see an example of use in class TSystemDirectory
root.cern.ch/root/htmldoc/TSystemDirectory.html
root.cern.ch/root/htmldoc/src/TS … istOfFiles
Rene
Hi! Thank you for your answer but i am not so good at programing so i have more questions .
So … after i do this :
TSystemDirectory *workdir = new TSystemDirectory(“workdir”,gSystem->WorkingDirectory());
TList *RootList = workdir->GetListOfFiles();
i will have a TList which contains all files from curent directory . ( how can i have only a certain type of files ??? )
I seen that TList has a method named First() whis return an TObject
This TObject will be a file from directory ?
can i do something like this :
TObject file_1 = RootList->First();
char file_name = file_1->GetName() ;
??
Also i seen in TSystemDirectory a method named FindFileObj which return
a TSytemFile . if more than one files are on the list will return the first one ?
also it is posible something like this ? :
TSystemFile *sys_file = workdir->FindFileObj() ;
char file_name_2 = sys_file->GetName() ;
???
In fact all i want to do is to iterate over a list of files of some type ( lets say .root )
and apply a function on each file . How can i acces the list created to do something like this :
for ( list_index = First() ; list_index=<Last() ; index++ )
{
file = workdir->list_index ;
function(file);
}
Thank you very much for your help
Adrian
Hi,
probably slightly off-topic:
check
carrot.cern.ch/CarrotExamples/ListDir.C
and the source file
carrot.cern.ch/CarrotExamples/ListDir.C.txt
Hope This Helps. Regards. Valeriy
Hi! Becouse of my poor knowledge of C i dont see where is the code that read directory contents . Thank you anyway
Hi,
the following code looks at every entry in a directory and
checks whether it is a directory :
const TString dir = “blablabla”;
void *dirp = gSystem->OpenDirectory(dir);
Char_t *afile;
while ((afile = const_cast<Char_t *>(gSystem->GetDirEntry(dirp)))) {
Long_t id;
Long_t size;
Long_t flags;
Long_t modtime;
const TString path = dir+"/"+afile;
if (gSystem->GetPathInfo(path.Data(),&id,&size,&flags,&modtime))
continue;
Int_t isDir = (02 & flags);
if (!isDir)
continue;
}
Eddy
Thank you very much to you all !!! I did it !!!
Now one more question : From where can i read in detail about gSystem and others gSomething ?
At root.cern.ch/root/html/TSystem.html
Cheers,
Philippe.