JS宏--自制文件系统Sys

//延时停顿
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 =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackispy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值