The FileUtils.jsm
JavaScript code module offers utility routines dealing with files. To use it, you first need to import the code module into your JavaScript scope:
Components.utils.import("resource://gre/modules/FileUtils.jsm");
The File constructor
(Firefox 9.0 / Thunderbird 9.0 / SeaMonkey 2.6)If you have a path to a file (or directory) you want to obtain an nsIFile
for, you can do so using the File
constructor, like this:
var f = new FileUtils.File(mypath);
Method overview
nsIFile getFile(string key, array pathArray, bool followLinks); |
nsIFile getDir(string key, array pathArray, bool shouldCreate, bool followLinks); |
nsIFileOutputStream openFileOutputStream(nsIFile file, int modeFlags); |
nsIFileOutputStream openAtomicFileOutputStream(nsIFile file, int modeFlags); |
nsIFileOutputStream openSafeFileOutputStream(nsIFile file, int modeFlags); |
void closeAtomicFileOutputStream(nsIFileOutputStream stream); |
void closeSafeFileOutputStream(nsIFileOutputStream stream); |
Constants
Constant | Value | Description |
MODE_RDONLY |
0x01 |
Corresponds to the PR_RDONLY parameter to PR_OPEN |
MODE_WRONLY |
0x02 |
Corresponds to the PR_WRONLY parameter to PR_OPEN |
MODE_CREATE |
0x08 |
Corresponds to the PR_CREATE_FILE parameter to PR_OPEN |
MODE_APPEND |
0x10 |
Corresponds to the PR_APPEND parameter to PR_OPEN |
MODE_TRUNCATE |
0x20 |
Corresponds to the PR_TRUNCATE parameter to PR_OPEN |
PERMS_FILE |
0644 |
Default permissions when creating files. |
PERMS_DIRECTORY |
0755 |
Default permissions when creating directories |
Methods
getFile()
Gets a file at the specified hierarchy under a nsIDirectoryService
key.
nsIFile getFile( string key, array pathArray, bool followLinks );
Parameters
key
- The
nsIDirectoryService
key to start from (see Getting special files for more info) pathArray
- An array of path components to locate beneath the directory specified by
key
. The last item in this array must be the leaf name of a file. followLinks
Optional- True if links should be followed, false otherwise.
Return value
Returns a nsIFile
object for the file specified. The file is NOT created if it does not exist, however all required directories along the way are.
getDir()
Gets a directory at the specified hierarchy under a nsIDirectoryService
key.
nsIFile getDir( string key, array pathArray, bool shouldCreate, bool followLInks );
Parameters
key
- The
nsIDirectoryService
key to start from (see Getting special files for more info) pathArray
- An array of path components to locate beneath the directory specified by
key
. shouldCreate
Optional- True if the directory hierarchy specified in
pathArray
should be created if it does not exist, false otherwise. followLinks
Optional- True if links should be followed, false otherwise location specified.
Return value
Returns a nsIFile
object for the location specified. If the directory requested does not exist, it is created, along with any parent directories that need to be created.
Note: If you want to use the full path to get to the directory you cannot use getDir. Instead use the file constructor, so simply:
var dir = new FileUtils.File('C:\\blah\\blah');
if (dir.exists()) {
//yes directory exists
}
openFileOutputStream()
Requires Gecko 7.0 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4)Opens a file output stream for writing.
The stream is opened with the DEFER_OPEN
nsIFileOutputStream.Behavior flag constants
; this means the file is not actually opened until the first time it's accessed.
nsIFileOutputStream openFileOutputStream( nsIFile file, int modeFlags );
Parameters
file
- The file to write to.
modeFlags
Optional- File open flags (see constants above)
Return value
Returns nsIFileOutputStream
(the non-safe variant) to write to.
openAtomicFileOutputStream()
Opens an atomic file output stream for writing.
Note: 'safe' and 'atomic' file output streams will never append; they will always overwrite an existing file.
Starting in Gecko 38.0, passing MODE_APPEND
without MODE_TRUNCATE
will throw an exception.
nsIFileOutputStream openAtomicFileOutputStream( nsIFile file, int modeFlags );
Parameters
file
- The file to write to.
modeFlags
Optional- File open flags (see constants above)
Return value
Returns nsIFileOutputStream
(the safe variant) to write to.
closeAtomicFileOutputStream()
Closes an atomic file output stream.
void closeAtomicFileOutputStream( nsIFileOutputStream stream );
Parameters
stream
- The stream to close.
openSafeFileOutputStream()
Opens a safe file output stream for writing.
Note: 'safe' and 'atomic' file output streams will never append; they will always overwrite an existing file.
Starting in Gecko 38.0, passing MODE_APPEND
without MODE_TRUNCATE
will throw an exception.
nsIFileOutputStream openSafeFileOutputStream( nsIFile file, int modeFlags );
Parameters
file
- The file to write to.
modeFlags
Optional- File open flags (see constants above)
Return value
Returns nsIFileOutputStream
(the safe variant) to write to.
Remarks
Note: Starting in Gecko 6.0, the stream is opened with the DEFER_OPEN
nsIFileOutputStream.Behavior flag constants
; this means the file is not actually opened until the first time it's accessed.
closeSafeFileOutputStream()
Closes a safe file output stream.
void closeSafeFileOutputStream( nsIFileOutputStream stream );
Parameters
stream
- The stream to close.