目录
背景
js是第一个我掌握的编程语言,所以经常用它来做一些比较简单实用的东西,比如加密记事本。为什么不直接用自带的记事本呢?因为自带的记事本记得文字都是明文,特容易被有心人看到,所以就自己找一个加密算法做一个网页记事本,通过操作后自动加密文本,这样即使有心人去看,也不会看出来。
因为记事本得做一个保存的功能,所以通过搜索,发现js可以实现这一功能,也就免去了使用其他语言的麻烦。以下是我从其他博客总结出来的内容。目的是方便你我他,对你有帮助的话点个赞再走。
环境
Windows系统,IE浏览器
正文
ActiveX是微软的东西,故而这玩意儿只有IE才支持!
javaScript中利用ActiveXObject来创建FileSystemObject操作文件
一、功能实现核心:FileSystemObject 对象
要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。
二、FileSystemObject编程
使用FileSystemObject 对象进行编程很简单,一般要经过如下的步骤: 创建FileSystemObject对象、应用相关方法、访问对象相关属性 。
(一)创建FileSystemObject对象
创建FileSystemObject对象的代码只要1行:
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);
API
构造方法 | ||
ActiveXObject('Scripting.FileSystemObject') | 仅IE浏览器支持该对象 | |
方法摘要 | ||
CreateFolder(string path) | 按照路径创建文件夹,支持一级目录 | |
Boolean | FolderExists(string path) | 判断路径下的文件夹是否存在 |
Object | GetFolder(string path) | 取得目录对象 |
Object | CreateTextFile(string path,int i,boolean b) | 在path路径下创建文件; i代表的是文件的权限:只读=1,只写=2 ,追加=8 等权限。(ForReading 、 ForWriting 或 ForAppending; b为true代表新建,false相反。 |
Object | OpenTextFile(string path,int i,boolean b) | 同上 |
Boolean | FileExists(string path) | 判断路径下的文件是否存在 |
CopyFile(string source,string destination) | 将source路径文件复制到destination路径下的文件去 | |
MoveFile(string source,string destination) | 将source路径文件移动到destination路径下的文件去 | |
DeleteFile(string source,Boolean b) | 删除source路径文件,b为true确认删除 | |
以下方法没有测试过,贴出api供参考 | ||
CopyFolder(string source,string destination) | 复制目录 | |
DeleteFolder | 删除一个目录 | |
GetAbsolutePathName(string path) | 取得一个文件的绝对路径 | |
GetBaseName() | 取得文件名 | |
GetDrive() | 取得盘符名 | |
GetDriveName() | 取得盘符名 | |
MoveFolder(string source,string destination) |
构造方法 | ||
Object | 通过方法OpenTextFile(string path,int i,boolean b)获取文件流对象 | |
方法摘要 | ||
Read(int i) | 用于读取文件中指定数量的字符 | |
ReadLine() | 读取一整行,但不包括换行符 | |
ReadAll() | 则读取文本文件的整个内容 | |
close() | 关闭文件流 |
构造方法 | ||
Object | 通过方法CreateTextFile(string path,int i,boolean b)、GetFile(string path)、OpenAsTextStream(ForWriting, true)获取文件对象 | |
方法摘要 | ||
Write(string txt) | 不在写入数据末尾添加新换行符 | |
WriteLine(string txt) | 要在最后添加一个新换行符 | |
WriteBlankLines(string txt) | 增加一个或者多个空行 | |
close() | 关闭文件流 |
构造方法 | ||
文件夹、文件Object | 通过GetFolder(string path)、GetFile(string path)方法获得 | |
方法摘要 | ||
Move(string path) | 移动文件夹、文件到path路径下 | |
Copy(string path) | 复制文件夹、文件到path路径下 | |
Delete() | 删除该对象的文件夹、文件 | |
GetExtensionName() | 取得文件的后缀 | |
GetFileName() | 取得文件名 | |
GetSpecialFolder() | 取得特殊的目录名 | |
GetFileName() | 取得文件名 | |
GetTempName() | 生成一个临时文件对象 | |
BuildPath() | 生成一个文件路径 | |
GetParentFolderName,静态字段 | 取得文件或目录的父目录名 | |
Files,静态字段 | 返回目录下所有文件集合 | |
attributes,静态字段 | 返回文件属性 | |
Datecreated,静态字段 | 返回文件夹、文件创建时间 | |
DateLastAccessed,静态字段 | 返回上次访问时间 | |
DateLastModified,静态字段 | 返回上次修改时间 | |
Path,静态字段 | 返回文件路径 | |
Name,静态字段 | 返回文件名称 | |
Type,静态字段 | 返回文件类型 | |
Size,静态字段 | 返回文件大小 | |
ParentFolder,静态字段 | 返回父目录 | |
RootFolder,静态字段 | 返回根目录 |
构造方法 | ||
object | 通过GetDrive(GetDriveName(path))获得驱动器盘符对象 | |
方法摘要 | ||
DriveExists() | 检验盘符是否存在 | |
Drives | 返回盘符的集合 |
总结
本人只用到了文件夹和文件的新建、写入、删除、移动、复制这些功能;如有其他需求请参照个文档;以下是我的功能实现效果图,有兴趣的可以去下方分享链接下载。
参考文章
https://www.cnblogs.com/zengxh/p/12390257.html
https://www.jb51.net/article/48538.htm
https://www.jb51.net/article/46712.htm
https://www.jb51.net/article/49867.htm
https://blog.csdn.net/qq_42192693/article/details/82313010
https://www.jb51.net/article/70613.htm
https://developer.mozilla.org/zh-CN/docs/Archive/Web/JavaScript/Microsoft_Extensions/ActiveXObject
链接
以上的文件已经分享至网盘,需要测试的自行下载;
链接:https://pan.baidu.com/s/1lUWJbDKtC7DkYgFKUN_uwQ
提取码:eijh