Online Shopping : Computers : Programming : Languages : JavaScript

+ Search
Add Entry AlertManage Folder Edit Entry Add page to
Did You Find This Entry Useful?

90 of 102 people (88%) answered Yes
Recently 9 of 10 people (90%) answered Yes


How do I read or write local files in Mozilla and Netscape 7

Apr 7th, 2008 23:19
ha mo, Mark Szlazak,,,,

<title>Local File Read / Write in Mozilla and Netspace 7</title>
<form name="aForm">
	<textarea name="aTextarea" rows="10" cols="90" 
// To perform local file IO from JavaScript in Mozilla, use the XPCOM 
nsIFile file IO library. See the above references for more details.
function xpcomFileWrite(filePath, content) {
	if (Components)	// XPConnect 'Components' object check.
		try {
            		// Get file component.
			var file = Components.classes
			if (!file.exists()) {
				alert('Creating new file ' + filePath);
create(type, permissions)
This function will create a new file or directory in the file system.
Any nodes that have not been created or resolved, will be. If the file
or directory already exists create() will return
type: This specifies the type of file system object to be made. The
only two types at this time are file and directory/folder which are:
If the type is unrecongnized, we will return an error
permissions: The unix style octal permissions. This may be ignored on
systems that do not need to do permissions. In general, permissions are
based on three octal numbers. The first specifies the access for the
user, the second for the group and the last for others.
	0 - No permission to read, write or execute.
	1 - Execute permission only.
	2 - Write permission only.
	3 - Execute and write permission.
	4 - Read permission only.
	5 - Execute and read permission.
	6 - Write and read permission.
	7 - Execute, write and read permission.
User read/write, group read, others read would be 644
				file.create(0x00, 0644);
			// Write with nsIFileOutputStream.
			var outputStream = Components.classes
init(), opens a file for reading, writing, or both.
1.	The path name of the file to be opened
2.	The file status IO flag. It is a bitwise OR of the following 
bit flags (only one of the first three flags below may be used):
		0x01 - Open for reading only.
		0x02 - Open for writing only.
		0x04 - Open for reading and writing.
		0x08 - If the file does not exist, the file is created. 
If the file exists, this flag has no effect.
		0x10 - If set, each write will wait for both the file 
data and file status to be physically updated.
		0x20 - The file pointer is set to the end of the file 
prior to each write.
		0x40 - If the file exists, its length is truncated to 0.
		0x80 - If the file does not exist, the file is created.
	If the file already exists, no action and NULL is returned.
3.	The access permission bits of the file 'mode'.
	CAVEAT: 'mode' is currently only applicable on UNIX platforms. 
The 'mode' argument may be ignored on other platforms.
		00400 - Read by owner.
		00200 - Write by owner.
		00100 - Execute (search if a directory) by owner.
		00040 - Read by group.
		00020 - Write by group.
		00010 - Execute by group.
		00004 - Read by others.
		00002 - Write by others
		00001 - Execute by others.
4.	Behavior flags specifying various behaviors of the class 
(currently not supported).
			outputStream.init(file, 0x20 | 0x02, 00004, 
			outputStream.write(content, content.length);
			return true;
		catch(e) {
			return false;
	return false;
if (xpcomFileWrite('D:\\My Web 
Pages\\test.html', '<html><head><\/head><body><h2>Hello World!
<\/h2><\/body><\/html>'))'file:\/\/\/D:\\My Web 
Pages\\test.html', 'testWindow', 'left=10,top=305,width=500,height=200')
function xpcomFileRead(filePath) {
	if (Components)
		try {
			var file = Components.classes
			if (!file.exists()) {
				alert('File does not exist');
				return false;
			var inputStream = Components.classes
			inputStream.init(file, 0x01, 00004, null);
			var sInputStream = Components.classes
		catch(e) {
			return false;
	return false;
if ((output = xpcomFileRead('D:\\My Web Pages\\test.html')))
	document.aForm.aTextarea.value = output;