//延时停顿
function sleep(second){
let start = new Date();
start.setTime(start.getTime() + second * 1000);
do{
var end=new Date();
DoEvents(); //防止线程阻塞
}while(end<start);
}
function stringToBinary(str, delimiter){ //如果文件追加或写入出现乱码,可以通过二进制写入,读取时调用binaryToString来还原
//将字符串转化成二进制字符串
let binaryString = '';
for(let i = 0; i < str.length; i++){
let charCode = str.charCodeAt(i);
let binaryChar = charCode.toString(2); //将数字转换为二进制表示
binaryChar = binaryChar.padStart(8, '0');
binaryString += binaryChar + delimiter; //delimiter作为分隔符
}
return binaryString.slice(0, -1); //移除末尾的delimiter
}
function binaryToString(binaryStr, delimiter){ //与stringToBinary对称
// 根据二进制分割符号进行分割
let arr = binaryStr.split(delimiter);
let str = '';
// 循环二进制字符串数组,将其还原成字符
for(let i = 0; i < arr.length; i++){
let binaryChar = arr[i];
let charCode = parseInt(binaryChar, 2); //二进制字符串转化成10进制数
let char = String.fromCharCode(charCode);
str += char;
}
return str;
}
//定义一个名称是Sys的构造函数
function Sys(){
//用于系统文件操作
if (!(this instanceof Sys)) throw new Error("只能通过new实例化");
//listDir 类似于dos命令dir
this.listDir = function(path, num){
if(typeof path !== "string") throw new TypeError("path: 必须是字符串");
if(![0,1,2,4,8,16].includes(num)) throw new RangeError("num: 是Dir函数的第二个参数,只能是0,1,2,4,8,16");
let fn = Dir(path, num);
let result = [];
while(true){
if(fn!=="." && fn!==".." && fn !== "") result.push(fn);
try{fn = Dir();}catch(Error){break;}
}
return result;
}
//获取文件夹中所有文件的名称(包括子文件夹)
Sys.prototype.objectDir = function(path){
//path: 文件夹路径
if(typeof path !== "string") throw new TypeError("path: 必须是字符串");
path = path + "\\*";
let fileNames = this.listDir(path, 2); //包含隐藏文件
let floderNames = this.listDir(path, 16); //包含文件夹
if(floderNames.length > 0) floderNames =