JavaScript 文件操作指南:FileSystemObject 对象详解

作者:木棉时间:2026-10-29 08:55:30浏览:329

本文详细介绍如何在 JavaScript 中利用 FileSystemObject 对象实现本地文件系统操作。内容涵盖创建 FSO 实例、获取驱动器与文件夹信息、创建及读写文本文件、以及文件的移动、拷贝和删除。通过具体代码示例,展示如何编写、读取和关闭文件流,并提醒浏览器安全策略对本地文件访问的限制。

JavaScript 文件操作技术详解


FileSystemObject 对象基础

一、核心实现:FileSystemObject 对象


在 JavaScript 中执行文件相关操作,核心依赖于 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)操作


利用 FileSystemObject 对象编程操作驱动器和文件夹非常直观,类似于在 Windows 文件浏览器中的交互体验,例如执行拷贝、移动文件夹或获取文件夹属性等操作。


(一)Drive 对象属性


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)操作


文件夹操作主要涉及创建、移动、删除以及获取相关属性。


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)操作


文件操作比驱动器和文件夹操作更为复杂,主要分为两类:一是对文件进行创建、拷贝、移动和删除的管理操作;二是对文件内容进行创建、添加、删除和读取的数据操作。以下分别详细介绍。


(一)创建文件


共有三种方法可用于创建一个空文本文件,此类文件有时也被称为文本流(text stream)。


第一种方法是使用 CreateTextFile 方法。代码如下:


var fso, f1;


fso = new ActiveXObject("Scripting.FileSystemObject");


f1 = fso.CreateTextFile("c:\\testfile.txt", true);


第二种方法是使用 OpenTextFile 方法,并设置 ForWriting 属性,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 文件操作技术,仍需大量的实践练习。此外需特别提醒,由于涉及浏览器内的文件读写这一高级操作,在默认浏览器安全级别下,代码运行前通常会弹出安全提示,请在实际环境中注意引导访问者进行处理。

作者最新文章