How to read and write files in JavaScript
Are you looking for the ways to access the file system using JavaScript? If your JavaScript code could access local files of the visitor to your site, it would be a huge security problem. That's why no browsers would allow it...
JavaScript is a simple yet very powerful scripting language. Why not use your knowledge of JavaScript for batch processing of local files and other common tasks?
Well, you can! Not through the Internet of course, but internally on your computer, or on your intranet if you have one. |
How can you use JavaScript to access your local files and folders? Currently there are two ways to do it:
1. Using JavaScript extensions (runs from JavaScript Editor), or
2. Using a web page and ActiveX objects (Internet Explorer only)
Using ActiveX objects gives you many possibilities, but there are two distinct disadvantages:
You need a web page to run your JavaScript, and
ActiveX objects only work with the Internet Explorer browser.
When using extensions, all you need to do is select Build / Execute from the menu and let JavaScript Editor do the job.
Example 1 (using extensions): Reading a file
1. Run JavaScript Editor
2. Copy and paste the code below
3. Save the file as FileRead.js, and
4. Select Build / Execute from the menu.
Note: If you do not save the file, getScriptPath() below will return an empty string.
// This example shows file manipulation routines: it echoes
// the contents of itself (the script file).
// Created with Antechinus® JavaScript Editor
// Copyright© 2009 C Point Pty Ltd
fh = fopen(getScriptPath(), 0); // Open the file for reading
if(fh!=-1) // If the file has been successfully opened
{
length = flength(fh); // Get the length of the file
str = fread(fh, length); // Read in the entire file
fclose(fh); // Close the file
// Display the contents of the file
write(str);
}
Example 2 (using extensions): Listing files in a folder
1. Run JavaScript Editor
2. Copy and paste the code below
3. Save the file as FolderExample.js, and
4. Select Build / Execute from the menu.
Note: if you do not save the file, getCurrentFolder() below will return an empty string.
// This example shows folder manipulation routines: it lists
// the contents of the current folder.
// Created with Antechinus® JavaScript Editor
// Copyright© 2009 C Point Pty Ltd
write("The contents of " + getCurrentFolder());
fileName = findFirstFile("*.*"); // Find the first file matching the filter
while(fileName.length)
{
write(fileName);
fileName = findNextFile();  // Find the next file matching the filter
}
Example 3 (using extensions): Writing a file using JavaScript
Writing files using JavaScript and built-in extensions is straightforward: open the file for writing, write to a file and close a file.
1. Run JavaScript Editor
2. Copy and paste the code below
3. (Optional) Save the file as WriteFileExample.js, and
4. Select Build / Execute from the menu.
function WriteFile()
{
var fh = fopen("c:\\MyFile.txt", 3); // Open the file for writing
if(fh!=-1) // If the file has been successfully opened
{
var str = "Some text goes here...";
fwrite(fh, str); // Write the string to a file
fclose(fh); // Close the file
}
}
WriteFile();
Example 4 (using ActiveX and a web page): Listing available drives
1. Run JavaScript Editor
2. Copy and paste the code below
3. Save the file as DriveList.htm, and
4. View the page using Internal Viewer or Internet Explorer
<HTML>
<HEAD>
<SCRIPT language=JavaScript>
function ShowAvailableDrives()
{
document.write(GetDriveList());
}
function GetDriveList()
{
var fso, s, n, e, x;
fso = new ActiveXObject("Scripting.FileSystemObject");
e = new Enumerator(fso.Drives);
s = "";
do
{
x = e.item();
s = s + x.DriveLetter;
s += ":- ";
if (x.DriveType == 3) n = x.ShareName;
else if (x.IsReady) n = x.VolumeName;
else n = "[Drive not ready]";
s += n + "<br>";
e.moveNext();
} while (!e.atEnd());
return(s);
}
</SCRIPT>
</HEAD>
<BODY>
<P>
<SCRIPT language=JavaScript> ShowAvailableDrives(); </SCRIPT>
</P>
</BODY>
</HTML>
Example 5 (using ActiveX and a web page): Writing a file using JavaScript
Writing files via ActiveX is slightly more involved than using JavaScript Editor extensions: you create an instance of a FileSystemObject, create a file, write to it, and close it.
In addition, you cannot run the code on its own, it needs to be a part of a web page or a stand-alone HTML Application (HTA).
1. Run JavaScript Editor
2. Copy and paste the code below
3. Save the file as WriteFileX.htm, and
4. View the page using Internal Viewer or Internet Explorer
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
function WriteFile()
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fh = fso.CreateTextFile("c:\\Test.txt", true);
fh.WriteLine("Some text goes here...");
fh.Close();
}
</SCRIPT>
</HEAD>
<BODY>
<P>
<SCRIPT language="JavaScript"> WriteFile(); </SCRIPT>
</P>
</BODY>
</HTML>
Putting it all together:
Use JavaScript for batch processing and common tasks of your local/intranet files
Using ActiveX objects works well, but you need a web page to run your JavaScript
ActiveX objects work on Internet Explorer, but not on Opera, Netscape or Firefox
When using JavaScript extensions you do not need a web page: run your code straight from the JavaScript Editor.
Where to go from here:
New to JavaScript? Become an expert in record time with the JavaScript Editor's step-by-step tutorials full of examples you can copy, paste and run. Also available: online version of the JavaScript tutorials.
Already an expert? Spice up your web pages with Antechinus® JavaScript Editor - effortlessly add multilevel menus, effects, Multimedia capabilities and
e-Commerce.
|