diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_attributes_8cpp-source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_attributes_8cpp-source.html Tue Mar 30 11:56:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,341 +0,0 @@ - -
-00001 // Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -00002 // All rights reserved. -00003 // This component and the accompanying materials are made available -00004 // under the terms of "Eclipse Public License v1.0" -00005 // which accompanies this distribution, and is available -00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html". -00007 // -00008 // Initial Contributors: -00009 // Nokia Corporation - initial contribution. -00010 // -00011 // Contributors: -00012 // -00013 // Description: -00014 // This code creates several files and directories inside -00015 // the private directory on the writable drive -00016 // i.e. the directory "\private\0FFFFF03." -00017 // Note that no special capabilities are needed provided all file -00018 // operations are directed at files that lie within -00019 // the private directory. This is the case with this example. -00020 // Before the program terminates, -00021 // all files and directories created will be deleted. -00022 // -00023 -00024 #include <f32file.h> -00025 #include "CommonFramework.h" -00026 -00027 LOCAL_D RFs fsSession; -00028 -00029 // example functions -00030 void DoDirectoryAttribsL(); -00031 void PrintDirectoryListsL(); -00032 void DeleteAllL(); -00033 -00034 // utility functions -00035 void FormatEntry(TDes& aBuffer, const TEntry& aEntry); -00036 void FormatAtt(TDes& aBuffer, const TUint aValue); -00037 void MakeSmallFileL(const TDesC& aFileName); -00038 -00039 void WaitForKey() -00040 { -00041 _LIT(KMessage,"Press any key to continue\n"); -00042 console->Printf(KMessage); -00043 console->Getch(); -00044 } -00045 -00046 LOCAL_C void doExampleL() -00047 { -00048 // connect to file server -00049 User::LeaveIfError(fsSession.Connect()); -00050 -00051 // create the private directory -00052 // on the writable drive -00053 // i.e. "\private\0FFFFF03\" -00054 // Note that the number 0FFFFF03 is the -00055 // process security id taken from the 2nd UID -00056 // specified in the mmp file. -00057 fsSession.CreatePrivatePath(RFs::GetSystemDrive()); -00058 -00059 // Set the session path to -00060 // this private directory on writable drive -00061 fsSession.SetSessionToPrivate(RFs::GetSystemDrive()); -00062 -00063 -00064 DoDirectoryAttribsL(); -00065 WaitForKey(); -00066 PrintDirectoryListsL(); -00067 WaitForKey(); -00068 DeleteAllL(); -00069 -00070 // close session with file server -00071 fsSession.Close(); -00072 } -00073 -00074 void DoDirectoryAttribsL() -00075 { -00076 // Define text to be used for display at the console. -00077 _LIT(KAttsMsg,"\nAttributes and entry details\n"); -00078 _LIT(KDateString,"%D%M%Y%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B"); -00079 _LIT(KDateMsg,"Using Entry():\nModification time of %S is %S\n"); -00080 _LIT(KSizeMsg,"Size = %d bytes\n"); -00081 _LIT(KBuffer,"%S"); -00082 _LIT(KEntryMsg,"Using Modified():\nModification time of %S is %S\n"); -00083 _LIT(KAttMsg,"Using Att():\n%S"); -00084 -00085 // Define subdirectory name and the file name to be used. -00086 _LIT(KSubDirName,"f32examp\\"); -00087 _LIT(KFileName,"tmpfile.txt"); -00088 -00089 // Create a file. -00090 // Display its entry details, its modification time -00091 // and its attributes. -00092 // Then change some attributes and print them again. -00093 console->Printf(KAttsMsg); -00094 -00095 // When referring to a directory rather than a file, -00096 // a backslash must be appended to the path. -00097 TFileName thePath; -00098 fsSession.PrivatePath(thePath); -00099 thePath.Append(KSubDirName); -00100 -00101 // Make the directory -00102 TInt err=fsSession.MkDir(thePath); -00103 if (err!=KErrAlreadyExists) // Don't leave if it already exists -00104 User::LeaveIfError(err); -00105 -00106 // Create a file in "private\0ffffff03\f32examp\ " -00107 thePath.Append(KFileName); -00108 MakeSmallFileL(thePath); -00109 -00110 // Get entry details for file and print them -00111 TEntry entry; -00112 User::LeaveIfError(fsSession.Entry(thePath,entry)); -00113 TBuf<30> dateString; -00114 entry.iModified.FormatL(dateString,KDateString); -00115 -00116 // Modification date and time = time of file's creation -00117 console->Printf(KDateMsg,&entry.iName,&dateString); -00118 -00119 // Print size of file -00120 console->Printf(KSizeMsg,entry.iSize); -00121 TBuf<80> buffer; -00122 FormatEntry(buffer,entry); // Archive attribute should be set -00123 console->Printf(KBuffer,&buffer); -00124 buffer.Zero(); -00125 -00126 // get the entry details using Att() and Modified() -00127 TTime time; -00128 User::LeaveIfError(fsSession.Modified(thePath,time)); -00129 time.FormatL(dateString,KDateString); -00130 -00131 // Modification date and time = time of file's creation -00132 console->Printf(KEntryMsg,&entry.iName,&dateString); -00133 TUint value; -00134 User::LeaveIfError(fsSession.Att(thePath,value)); -00135 FormatAtt(buffer,value); // get and print file attributes -00136 console->Printf(KAttMsg,&buffer); -00137 buffer.Zero(); -00138 -00139 // Change entry details using SetEntry() to clear archive -00140 User::LeaveIfError(fsSession.SetEntry(thePath,time, -00141 NULL,KEntryAttArchive)); -00142 } -00143 -00144 void PrintDirectoryListsL() -00145 { -00146 // Define text to be used for display at the console. -00147 _LIT(KListMsg,"\nDirectory listings\n"); -00148 _LIT(KListMsg2,"\nDirectories and files:\n"); -00149 _LIT(KDirList,"%S\n"); -00150 _LIT(KDirs,"\nDirectories:\n"); -00151 _LIT(KFilesSizes,"\nFiles and sizes:\n"); -00152 _LIT(KBytes," %d bytes\n"); -00153 _LIT(KNewLine,"\n"); -00154 -00155 // Define subdirectory names and the file names to be used here. -00156 _LIT(KDir1,"f32examp\\tmpdir1\\"); -00157 _LIT(KDir2,"f32examp\\tmpdir2\\"); -00158 _LIT(KFile2,"f32examp\\tmpfile2.txt"); -00159 _LIT(KDirName,"f32examp\\*"); -00160 -00161 // Create some directories and files -00162 // in private"\f32examp\." -00163 // List them using GetDir(), then list files and -00164 // directories in separate lists. -00165 -00166 console->Printf(KListMsg); -00167 -00168 TFileName thePrivatePath; -00169 fsSession.PrivatePath(thePrivatePath); -00170 -00171 TFileName thePath; -00172 TInt err; -00173 -00174 // Create private\0fffff03\f32examp\tmpdir1 -00175 thePath = thePrivatePath; -00176 thePath.Append(KDir1); -00177 err=fsSession.MkDir(thePath); -00178 if (err!=KErrAlreadyExists) -00179 User::LeaveIfError(err); // Don't leave if it already exists -00180 -00181 // Create "private\0fffff03\f32examp\tmpdir2" -00182 thePath = thePrivatePath; -00183 thePath.Append(KDir2); -00184 err=fsSession.MkDir(thePath); -00185 if (err!=KErrAlreadyExists) -00186 User::LeaveIfError(err); // Don't leave if it already exists -00187 -00188 // Create "private\0ffffff03\f32examp\tmpfile2.txt" -00189 thePath = thePrivatePath; -00190 thePath.Append(KFile2); -00191 MakeSmallFileL(thePath); -00192 -00193 // Now list all files and directories in "\f32examp\" -00194 // -00195 // in alphabetical order. -00196 thePath = thePrivatePath; -00197 thePath.Append(KDirName); -00198 CDir* dirList; -00199 -00200 //err = fsSession.GetDir(thePath,KEntryAttMaskSupported,ESortByName,dirList); -00201 -00202 User::LeaveIfError(fsSession.GetDir(thePath,KEntryAttMaskSupported,ESortByName,dirList)); -00203 console->Printf(KListMsg2); -00204 TInt i; -00205 for (i=0;i<dirList->Count();i++) -00206 console->Printf(KDirList,&(*dirList)[i].iName); -00207 delete dirList; -00208 -00209 // List the files and directories in \f32examp\ separately -00210 CDir* fileList; -00211 User::LeaveIfError(fsSession.GetDir(thePath,KEntryAttNormal,ESortByName,fileList,dirList)); -00212 console->Printf(KDirs); -00213 for (i=0;i<dirList->Count();i++) -00214 console->Printf(KDirList,&(*dirList)[i].iName); -00215 console->Printf(KFilesSizes); -00216 for (i=0;i<fileList->Count();i++) -00217 { -00218 console->Printf(KDirList,&(*fileList)[i].iName); -00219 console->Printf(KBytes,(*fileList)[i].iSize); -00220 } -00221 console->Printf(KNewLine); -00222 delete dirList; -00223 delete fileList; -00224 -00225 } -00226 -00227 void DeleteAllL() -00228 // Delete all the files and directories which have been created -00229 { -00230 // Define descriptor constants using the _LIT macro -00231 _LIT(KDeleteMsg,"\nDeleteAll()\n"); -00232 _LIT(KFile2,"f32examp\\tmpfile2.txt"); -00233 _LIT(KDir1,"f32examp\\tmpdir1\\"); -00234 _LIT(KDir2,"f32examp\\tmpdir2\\"); -00235 _LIT(KFile1,"f32examp\\tmpfile.txt"); -00236 _LIT(KTopDir,"f32examp\\"); -00237 console->Printf(KDeleteMsg); -00238 -00239 TFileName thePrivatePath; -00240 fsSession.PrivatePath(thePrivatePath); -00241 -00242 TFileName thePath; -00243 -00244 thePath = thePrivatePath; -00245 thePath.Append(KFile2); -00246 User::LeaveIfError(fsSession.Delete(thePath)); -00247 -00248 thePath = thePrivatePath; -00249 thePath.Append(KDir1); -00250 User::LeaveIfError(fsSession.RmDir(thePath)); -00251 -00252 thePath = thePrivatePath; -00253 thePath.Append(KDir2); -00254 User::LeaveIfError(fsSession.RmDir(thePath)); -00255 -00256 thePath = thePrivatePath; -00257 thePath.Append(KFile1); -00258 User::LeaveIfError(fsSession.Delete(thePath)); -00259 -00260 thePath = thePrivatePath; -00261 thePath.Append(KTopDir); -00262 User::LeaveIfError(fsSession.RmDir(thePath)); -00263 } -00264 -00265 void MakeSmallFileL(const TDesC& aFileName) -00266 { -00267 _LIT8(KFileData,"Some data"); -00268 RFile file; -00269 User::LeaveIfError(file.Replace(fsSession,aFileName,EFileWrite)); -00270 User::LeaveIfError(file.Write(KFileData)); -00271 User::LeaveIfError(file.Flush()); // Commit data -00272 file.Close(); // close file having finished with it -00273 } -00274 -00275 void FormatEntry(TDes& aBuffer, const TEntry& aEntry) -00276 { -00277 _LIT(KEntryDetails,"Entry details: "); -00278 _LIT(KReadOnly," Read-only"); -00279 _LIT(KHidden," Hidden"); -00280 _LIT(KSystem," System"); -00281 _LIT(KDirectory," Directory"); -00282 _LIT(KArchive," Archive"); -00283 _LIT(KNewLIne,"\n"); -00284 aBuffer.Append(KEntryDetails); -00285 if(aEntry.IsReadOnly()) -00286 aBuffer.Append(KReadOnly); -00287 if(aEntry.IsHidden()) -00288 aBuffer.Append(KHidden); -00289 if(aEntry.IsSystem()) -00290 aBuffer.Append(KSystem); -00291 if(aEntry.IsDir()) -00292 aBuffer.Append(KDirectory); -00293 if(aEntry.IsArchive()) -00294 aBuffer.Append(KArchive); -00295 aBuffer.Append(KNewLIne); -00296 } -00297 -00298 void FormatAtt(TDes& aBuffer, const TUint aValue) -00299 { -00300 _LIT(KAttsMsg,"Attributes set are:"); -00301 _LIT(KNormal," Normal"); -00302 _LIT(KReadOnly," Read-only"); -00303 _LIT(KHidden," Hidden"); -00304 _LIT(KSystem," System"); -00305 _LIT(KVolume," Volume"); -00306 _LIT(KDir," Directory"); -00307 _LIT(KArchive," Archive"); -00308 _LIT(KNewLine,"\n"); -00309 aBuffer.Append(KAttsMsg); -00310 if (aValue & KEntryAttNormal) -00311 { -00312 aBuffer.Append(KNormal); -00313 return; -00314 } -00315 if (aValue & KEntryAttReadOnly) -00316 aBuffer.Append(KReadOnly); -00317 if (aValue & KEntryAttHidden) -00318 aBuffer.Append(KHidden); -00319 if (aValue & KEntryAttSystem) -00320 aBuffer.Append(KSystem); -00321 if (aValue & KEntryAttVolume) -00322 aBuffer.Append(KVolume); -00323 if (aValue & KEntryAttDir) -00324 aBuffer.Append(KDir); -00325 if (aValue & KEntryAttArchive) -00326 aBuffer.Append(KArchive); -00327 aBuffer.Append(KNewLine); -00328 } -00329 -