JavaScript 使用 FileSystemObject 操作本地文件与目录详解

作者:异步漫步

时间:2026-10-30

浏览:372

本文详细介绍如何在 JavaScript 中利用 FileSystemObject 对象实现本地文件系统的读写与管理。通过创建对象实例,开发者可以调用相关方法对驱动器、文件夹及文件进行创建、移动、拷贝和删除操作,并演示了文本流的写入与读取技巧。

文章目录

JavaScript 是网页开发中不可或缺的脚本语言,它赋予网页生动的交互与丰富的表现力。然而,许多开发者可能尚未充分利用其更高级的功能,例如像 VB 或 VC 等高级语言那样对文件和文件夹执行读取、写入及删除操作。本文将深入解析如何利用 JavaScript 语言实现这些文件操作功能。

FileSystemObject 对象核心

一、功能实现核心:FileSystemObject 对象

在 JavaScript 中实现文件操作的核心在于 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 文件浏览器中进行的交互操作,例如拷贝、移动文件夹以及获取文件夹属性等。

(一) 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)

四、操作文件夹 (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)

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

(一) 创建文件

共有三种方法可用于创建一个空文本文件,这类文件有时也被称为文本流 (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 文件操作技术,仍需大量实践练习。此外需提醒大家,由于涉及浏览器内文件读写的高级操作,默认浏览器安全级别下,代码运行前通常会弹出信息提示。

以上就是小编为大家带来的 js 获取本地文件及目录的方法 (推荐) 全部内容了,希望大家多多支持本站~

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章