Compare Revisions

Working With Directories

Revision 98985:

Revision 98985 by Enn on

Revision 98986:

Revision 98986 by SteveLee on

Title:
Working With Directories
Working With Directories
Slug:
FileGuide/Directories
FileGuide/Directories
Content:

Revision 98985
Revision 98986
n11      A reference to a directory may be created in the same way an11      A reference to a directory may be created in the same way a
>s with a file by using the <a href="en/NsIScriptableIO#getFile.28>s with a file by using the <a href="/en/nsIScriptableIO#getFile.2
>.29">getFile</a> method. You can access a subdirectory by supplyi>8.29" title="en/nsIScriptableIO#getFile.28.29">getFile</a> method
>ng a directory name as the second argument, or refer to one of th>. You can access a subdirectory by supplying a directory name as 
>e special directories by supplying a null string for the second a>the second argument, or refer to one of the special directories b
>rgument. The first line below with retrieve the directory corresp>y supplying a null string for the second argument. The first line
>onding to the user's home directory, while the second will retrie> below with retrieve the directory corresponding to the user's ho
>ve the directory 'myfiles' on the desktop.>me directory, while the second will retrieve the directory 'myfil
 >es' on the desktop.
n18      To refer to a subdirectory, rather than using a path, use tn18      To refer to a subdirectory, rather than using a path, use t
>he <a href="en/NsIFile/append">append</a> method to build up a pa>he <a href="/en/nsIFile/append" title="en/nsIFile/append">append<
>th. For instance:>/a> method to build up a path. For instance:
n26      In this example, a subdirectory several levels down is refen26      In this example, a subdirectory several levels down is refe
>renced. Each call to the <code>append</code> method navigates to >renced. Each call to the <code>append</code> method navigates to 
>a further subdirectory. The result is a subdirectory three levels>a further subdirectory. The result is a subdirectory three levels
> below the desktop directory. These directories do not need to ex> below the desktop directory. These directories do not need to ex
>ist yet, but they can be created using the <a href="en/NsIFile/cr>ist yet, but they can be created using the <a href="/en/nsIFile/c
>eate">create</a> method. See <a href="#Creating_Directories">Crea>reate" title="en/nsIFile/create">create</a> method. See <a href="
>ting Directories</a> below for information about this. Note that >#Creating_Directories">Creating Directories</a> below for informa
>the <code>append</code> method modifies the file object, rather t>tion about this. Note that the <code>append</code> method modifie
>han returning a new one.>s the file object, rather than returning a new one.
n29      Both files and directories are represented using the same kn29      Both files and directories are represented using the same k
>ind of object so most of the functions available for the <a href=>ind of object so most of the functions available for the <a href=
>"en/NsIFile">File object</a> will work for both. You can check if>"/en/nsIFile" title="en/nsIFile">File object</a> will work for bo
> the object refers to a directory or a file by using the <a href=>th. You can check if the object refers to a directory or a file b
>"en/NsIFile/isDirectory">isDirectory</a> method. This method retu>y using the <a href="/en/nsIFile/isDirectory" title="en/nsIFile/i
>rns true if a file object returned by the <code>getFile</code> me>sDirectory">isDirectory</a> method. This method returns true if a
>thod refers to a directory, and false otherwise. There is also a > file object returned by the <code>getFile</code> method refers t
>corresponding <a href="en/NsIFile/isFile">isFile</a> method to ch>o a directory, and false otherwise. There is also a corresponding
>eck if an object refers to a file. In both cases, the method fail> <a href="/en/nsIFile/isFile" title="en/nsIFile/isFile">isFile</a
>s if the file or directory does not exist, so you should check fi>> method to check if an object refers to a file. In both cases, t
>rst using the <a href="en/NsIFile/exists">exists</a> method.>he method fails if the file or directory does not exist, so you s
 >hould check first using the <a href="/en/nsIFile/exists" title="e
 >n/nsIFile/exists">exists</a> method.
n41      You can create a new directory by using the <a href="en/NsIn41      You can create a new directory by using the <a href="/en/ns
>File/create">create</a> method of the directory object. For direc>IFile/create" title="en/nsIFile/create">create</a> method of the 
>tories, the first argument to this method should be the constant >directory object. For directories, the first argument to this met
><code>DIRECTORY_TYPE</code> (which has a value of 1). To create a>hod should be the constant <code>DIRECTORY_TYPE</code> (which has
> file instead, you could use the constant <code>NORMAL_FILE_TYPE<> a value of 1). To create a file instead, you could use the const
>/code> instead.>ant <code>NORMAL_FILE_TYPE</code> instead.
n56      The directory object's <a href="en/NsIFile/directoryEntriesn56      The directory object's <a href="/en/nsIFile/directoryEntrie
>">directoryEntries</a> property is used to get a list of the item>s" title="en/nsIFile/directoryEntries">directoryEntries</a> prope
>s in a directory. It returns an enumeration which can be iterated>rty is used to get a list of the items in a directory. It returns
> over.> an enumeration which can be iterated over.
n65    var item = items.getNext();n65    var item = items.getNext().QueryInterface(Components.interfac
 >es.nsIFile);
t74      This example iterates through the files in the Home directot74      This example iterates through the files in the Home directo
>ry and looks for the file with the latest modification time (the >ry and looks for the file with the latest modification time (the 
>last file in that directory that was written to). As the <code>di>last file in that directory that was written to). As the <code>di
>rectoryEntries</code> property is an enumeration, you can iterate>rectoryEntries</code> property is an enumeration, you can iterate
> over the items by using the <a href="en/NsISimpleEnumerator/hasM> over the items by using the <a href="/en/nsISimpleEnumerator/has
>oreElements">hasMoreElements</a> and <a href="en/NsISimpleEnumera>MoreElements" title="en/nsISimpleEnumerator/hasMoreElements">hasM
>tor/getNext">getNext</a> methods. For each item, the <a href="en/>oreElements</a> and <a href="/en/nsISimpleEnumerator/getNext" tit
>NsIFile/isFile">isFile</a> method is called to check if an item i>le="en/nsISimpleEnumerator/getNext">getNext</a> methods. For each
>s a file and the <a href="en/NsIFile/lastModifiedTime">lastModifi> item, the <a href="/en/nsIFile/isFile" title="en/nsIFile/isFile"
>edTime</a> property is compared with the time of the <code>lastmo>>isFile</a> method is called to check if an item is a file and th
>d</code> reference. If the time is higher, the <code>lastmod</cod>e <a href="/en/nsIFile/lastModifiedTime" title="en/nsIFile/lastMo
>e> variable is updated as needed. The result is that <code>lastmo>difiedTime">lastModifiedTime</a> property is compared with the ti
>d</code> will be set to the file with the latest modification tim>me of the <code>lastmod</code> reference. If the time is higher, 
>e. The <code>isFile</code> method is used to ensure that the modi>the <code>lastmod</code> variable is updated as needed. The resul
>fication times are only examined for files, and not subdirectorie>t is that <code>lastmod</code> will be set to the file with the l
>s.>atest modification time. The <code>isFile</code> method is used t
 >o ensure that the modification times are only examined for files,
 > and not subdirectories.

Back to History