JavaScript通过FileSystemObject操作本地文件与目录详解
本文详解如何在JavaScript中利用FileSystemObject对象进行本地文件与目录操作。涵盖创建、读写、移动、删除文件及获取驱动器属性等核心功能,通过具体代码示例展示ActiveXObject的使用方法及浏览器安全限制。
JavaScript通过FileSystemObject操作本地文件与目录详解
JavaScript作为网页开发的核心脚本语言,赋予了页面丰富的交互性与动态效果。然而,许多开发者可能尚未充分利用其高级功能,例如像VB或VC等高级语言那样对本地文件和文件夹进行读写及删除操作。本文将深入解析如何利用JavaScript实现这些文件操作功能。
功能实现核心:FileSystemObject 对象
一、功能实现核心:FileSystemObject 对象
在JavaScript中实现文件操作功能,主要依赖于FileSystemObject对象。在深入探讨该对象的具体属性和方法之前,我们先了解其包含的相关对象和集合。
FileSystemObject编程三部曲
二、FileSystemObject编程三部曲
利用FileSystemObject对象进行编程流程简洁,通常包含三个步骤:首先创建FileSystemObject对象实例,接着调用相关方法执行操作,最后访问对象的属性获取信息。
(一)创建FileSystemObject对象
创建FileSystemObject对象的代码仅需一行:
var fso = new ActiveXObject(“Scripting.FileSystemObject”);
执行上述代码后,变量fso即成为FileSystemObject对象的一个实例。
(二)应用相关方法
对象实例创建完成后,即可调用其相关方法。例如,使用CreateTextFile方法可以创建一个文本文件:
var fso = new ActiveXObject(“Scripting.FileSystemObject”);
var f1 = fso.createtextfile(“c://myjstest.txt”,true”);
(三)访问对象相关属性
要访问对象的属性,需先建立指向该对象的句柄,这可以通过get系列方法实现:GetDrive用于获取驱动器信息,GetFolder用于获取文件夹信息,GetFile用于获取文件信息。例如,执行以下代码后,f1将成为指向文件c:/test.txt的句柄:
var fso = new ActiveXObject(“Scripting.FileSystemObject”);
var f1 = fso.GetFile(“c://myjstest.txt”);
随后,即可通过f1访问对象的各项属性。例如:
var fso = new ActiveXObject(“Scripting.FileSystemObject”);
var f1 = fso.GetFile(“c://myjstest.txt”);
alert(“File last modified: ” + f1.DateLastModified);
执行上述最后一句代码后,将显示c:/myjstest.txt文件的最后修改日期属性值。
需要注意的是,对于通过create方法建立的对象,无需再使用get方法获取句柄,直接使用该create方法建立的句柄名称即可访问:
var fso = new ActiveXObject(“Scripting.FileSystemObject”);
var f1 = fso.createtextfile(“c://myjstest.txt”,true”);
alert(“File last modified: ” + f1.DateLastModified);
操作驱动器(Drives)
三、操作驱动器(Drives)
使用FileSystemObject对象编程操作驱动器和文件夹非常直观,类似于在Windows文件浏览器中进行交互,例如拷贝或移动文件夹,以及获取文件夹属性。
(一)Drives对象属性
Drive对象负责收集系统中物理或逻辑驱动器的资源内容,具备以下属性:
l TotalSize:以字节(byte)为单位的驱动器总大小。
l AvailableSpace或FreeSpace:以字节(byte)为单位的驱动器可用空间。
l DriveLetter:驱动器盘符。
l DriveType:驱动器类型,取值包括:removable(移动介质)、fixed(固定介质)、network(网络资源)、CD-ROM或RAM盘。
l SerialNumber:驱动器的序列号。
l FileSystem:驱动器所属的文件系统类型,取值为FAT、FAT32或NTFS。
l IsReady:指示驱动器是否已就绪可用。
l ShareName:共享名称。
l VolumeName:卷标名称。
l Path和RootFolder:驱动器的路径或根目录名称。
(二)Drive对象操作例程
以下例程展示了如何获取驱动器C的卷标、总容量及可用空间等信息:
var fso, drv, s =”“;
fso = new ActiveXObject(“Scripting.FileSystemObject”);
drv = fso.GetDrive(fso.GetDriveName(“c://”));
s += “Drive C:” + ” - “;
s += drv.VolumeName + “/n”;
s += “Total Space: ” + drv.TotalSize / 1024;
s += ” Kb” + “/n”;
s += “Free Space: ” + drv.FreeSpace / 1024;
s += ” Kb” + “/n”;
alert(s);
操作文件夹(Folders)
四、操作文件夹(Folders)
文件夹相关操作包括创建、移动、删除以及获取其属性。
(一)Folder对象的相关属性和方法列表
(二)Folder对象操作例程
以下例程演示了获取父文件夹名称、创建文件夹、删除文件夹以及判断是否为根目录等操作:
var fso, fldr, s = “”;
// 创建FileSystemObject对象实例
fso = new ActiveXObject(“Scripting.FileSystemObject”);
// 获取Drive 对象
fldr = fso.GetFolder(“c://”);
// 显示父目录名称
alert(“Parent folder name is: ” + fldr + “/n”);
// 显示所在drive名称
alert(“Contained on drive ” + fldr.Drive + “/n”);
// 判断是否为根目录
if (fldr.IsRootFolder)
alert(“This is the root folder.”);
else
alert(“This folder isn't a root folder.”);
alert(“/n/n”);
// 创建新文件夹
fso.CreateFolder (“C://Bogus”);
alert(“Created folder C://Bogus” + “/n”);
// 显示文件夹基础名称,不包含路径名
alert(“Basename = ” + fso.GetBaseName(“c://bogus”) + “/n”);
// 删除创建的文件夹
fso.DeleteFolder (“C://Bogus”);
alert(“Deleted folder C://Bogus” + “/n”);
操作文件(Files)
五、操作文件(Files)
文件操作比驱动器和文件夹操作更为复杂,主要分为两类:一是对文件的创建、拷贝、移动和删除;二是对文件内容的创建、添加、删除和读取。下文将分别详细介绍。
(一)创建文件
共有3种方法可用于创建一个空文本文件,此类文件有时也称为文本流(text stream)。
第一种方法是使用CreateTextFile方法。代码如下:
var fso, f1;
fso = new ActiveXObject(“Scripting.FileSystemObject”);
f1 = fso.CreateTextFile(“c://testfile.txt”, true);
第二种方法是使用OpenTextFile方法,并添加ForWriting属性,其值为2。代码如下:
var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject(“Scripting.FileSystemObject”);
ts = fso.OpenTextFile(“c://test.txt”, ForWriting, true);
第三种方法是使用OpenAsTextStream方法,同样需要设置ForWriting属性。代码如下:
var fso, f1, ts;
var ForWriting = 2;
fso = new ActiveXObject(“Scripting.FileSystemObject”);
fso.CreateTextFile (“c://test1.txt”);
f1 = fso.GetFile(“c://test1.txt”);
ts = f1.OpenAsTextStream(ForWriting, true);
(二)添加数据到文件
文件创建后,通常遵循“打开文件->填写数据->关闭文件”的步骤来添加数据。
打开文件可使用FileSystemObject对象的OpenTextFile方法,或使用File对象的OpenAsTextStream方法。
填写数据需使用TextStream对象的Write、WriteLine或WriteBlankLines方法。这三者在写入数据时的区别在于:Write方法不在数据末尾添加换行符,WriteLine方法会在最后添加一个新换行符,而WriteBlankLines则增加一个或多个空行。
关闭文件可使用TextStream对象的Close方法。
(三)创建文件及添加数据例程
以下代码将创建文件、添加数据及关闭文件几个步骤结合应用:
var fso, tf;
fso = new ActiveXObject(“Scripting.FileSystemObject”);
// 创建新文件
tf = fso.CreateTextFile(“c://testfile.txt”, true);
// 填写数据,并增加换行符
tf.WriteLine(“Testing 1, 2, 3.”) ;
// 增加3个空行
tf.WriteBlankLines(3);
// 填写一行,不带换行符
tf.Write (“This is a test.”);
// 关闭文件
tf.Close();
(四)读取文件内容
从文本文件读取数据需使用TextStream对象的Read、ReadLine或ReadAll方法。Read方法用于读取指定数量的字符;ReadLine方法读取一整行(不含换行符);ReadAll方法则读取整个文本文件内容。读取的内容存入字符串变量,用于显示或分析。若使用Read或ReadLine方法且需跳过部分内容,可使用Skip或SkipLine方法。
以下代码演示了打开文件、填写数据以及读取数据的过程:
var fso, f1, ts, s;
var ForReading = 1;
fso = new ActiveXObject(“Scripting.FileSystemObject”);
// 创建文件
f1 = fso.CreateTextFile(“c://testfile.txt”, true);
// 填写一行数据
f1.WriteLine(“Hello World”);
f1.WriteBlankLines(1);
// 关闭文件
f1.Close();
// 打开文件
ts = fso.OpenTextFile(“c://testfile.txt”, ForReading);
// 读取文件一行内容到字符串
s = ts.ReadLine();
// 显示字符串信息
alert(“File contents = ‘” + s + “‘”);
// 关闭文件
ts.Close();
(五)移动、拷贝和删除文件
针对上述三种文件操作,JavaScript分别提供了两种对应方法:File.Move或FileSystemObject.MoveFile用于移动文件;File.Copy或FileSystemObject.CopyFile用于拷贝文件;File.Delete或FileSystemObject.DeleteFile用于删除文件。
以下代码演示了在驱动器C根目录下创建文本文件并填写内容,随后将文件移动至/tmp目录,在/temp目录下建立文件拷贝,最后删除这两个目录中的文件:
var fso, f1, f2, s;
fso = new ActiveXObject(“Scripting.FileSystemObject”);
f1 = fso.CreateTextFile(“c://testfile.txt”, true);
// 写一行
f1.Write(“This is a test.”);
// 关闭文件
f1.Close();
// 获取C:/根目录下的文件句柄
f2 = fso.GetFile(“c://testfile.txt”);
// 移动文件到/tmp目录下
f2.Move (“c://tmp//testfile.txt”);
// 拷贝文件到/temp目录下
f2.Copy (“c://temp//testfile.txt”);
// 获取文件句柄
f2 = fso.GetFile(“c://tmp//testfile.txt”);
f3 = fso.GetFile(“c://temp//testfile.txt”);
// 删除文件
f2.Delete();
f3.Delete();
结语
六、结 语
通过上述对FileSystemObject各种对象、属性和方法的介绍及示例,相信读者已清楚如何在JavaScript中操作驱动器、文件和文件夹。尽管上述例程较为简单,但要全面灵活掌握JavaScript文件操作技术,仍需大量实践。此外需提醒的是,由于涉及浏览器内的高级文件读写操作,默认浏览器安全级别下,代码运行前通常会弹出信息提示。
到此这篇关于javascript读取本地文件和目录方法详解的文章就介绍到这了,更多相关javascript读取本地文件和目录内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
