How to get and change file details

This topic describes how to get and change file details.

The TEntry and TEntryArray classes are used to store, retrieve, interrogate and sort directory entries. TEntry encapsulates a single directory entry and TEntryArray an array of directory entries.

Retrieving entry details

Use RFs::Entry() to retrieve the size of the file, its attributes, name and the date and time of its latest modification (if the file has not been modified, this will be the time of its creation).

  // Get and print date/time and file size 
TBuf<30> dateString; 
TEntry entry;
User::LeaveIfError(fsSession.Entry(path,entry)); 
_LIT(KDateString,"%D%M%Y%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B");
entry.iModified.FormatL(dateString,KDateString); 
_LIT(KModString, "Modification time of %S is %S\n"); // Format and print date and time
console->Printf(KModString, entry.iName,&dateString); // Get file size
_LIT(KSizeString, "Size = %d bytes\n");
console->Printf(KSizeString,entry.iSize); 

Notes

  • The time extracted using TEntry::iModified (and by RFs::Modified()) is an object of class TTime. Before a TTime value can be displayed, it must either be converted into its numeric fields (i.e., into a TDateTime object), or formatted, using TTime::FormatL(), as above.

Changing attributes

Use RFs::SetAtt() to set a file or directory's attributes. It requires two attribute mask arguments. Any attributes specified in the first mask are set and any specified in the second are cleared. No attributes may be specified in both bitmasks.

In the following example, the hidden and system attributes are set and the archive attribute is cleared.

_LIT(KString,"%S");
User::LeaveIfError(fsSession.SetAtt(path,KEntryAttHidden|KEntryAttSystem,KEntryAttArchive));