文件模块系统

文件模块系统

  • 文件系统属于nodejs原生自带的api,使用的时候需要导入才可以已使用
  • 但凡是模块 都需要导入,可以直接导入也可以下载非官方的第三方模块进行导入

require可以传入路径字符串,代表导入引入的意思

  • xx.js代表导入一个文件 如果参数是非路径字符串,而是一个普通的名字

  • 这个名字代表的就是一个模块

使用require两种情况

  1. 要导入文件,写文件路径
  2. 要导入模块,写模块名称


导入fs模块:

fs:file system文件管理系统模块 提供了操作文档的功能(创建.删除,复制粘贴...)

var fs = require("fs");

写入文件:

fs.writeFilesync();   同步

  • 写入一个文件 writeFileSync(同步写入一个文件,要求在写入的过程中其他进程需要等待写入完成才可以执行) 数据无价

  • 绝对路径:直接可以根据当前路径准确找到文件

  • 相对路径:相对于这个文件来说,路径中的某一部分是咱是不固定的

fs.writeFileSync("./123.txt","这个知识点很重要,很多游戏的计分板就是通过写入数据到本地文件实现的");
  • writeFile方法与writeFileSync用于一样都是把一段文本写入到文件中

fs.writeFile();  异步

  • 第一个参数为写入的文件

  • 第二个为写入的内容

  • 第三个为写入之后的回调函数

  • 回调函数:当任务完成之后,如果写入出错程序会把此次写入的错误信息返回给我 error参数

fs.writeFile("./123.txt", "嘿嘿???", function (error) {
    if (error) {
        /*
        error包含有错误的所有信息,比如路径拼错
        假如是网络请求的error那么说明此次此次请求成功但是服务器
        觉得请求的不对,所以返回的错误
        */
        console.log(error);

    } else {
        console.log("成功");
        //如果文件存在那么代表更新内容
        // 如果文件不存在则先创建文件在添加内容
    }
});

同步:代码占用主线程,是阻塞状态,直到任务完成之后才会打开阻塞

异步:分线程,任务是在后台执行,不会阻塞当前代码,当前代码立刻向下执行所以异步函数一般都会有一个回调函数,当异步完成的时候回调函数触发,查看当前的状态;

文件操作为什么会有异步?

文件操作在写入的时候,耗时不确定,磁盘的写入速度,文件的大小都会影响到本次任务的耗时,如果使用同步,容易造成现成堵塞,反映到程序上就是会出现卡顿,一般遇到这种需求,都建议使用异步函数,避免现成卡顿

定时器是一个异步函数

setTimeout(() => {

}, 10);
console.log(); // 优先执行log,可见是异步函数

读取文件:

fs.readFileSync();  同步

参数是文件的路径 返回的是文件里面的内容

var content = fs.readFileSync("./123.txt");

读取到的内容不是字符串,而是原始的数据buffer

buffer是一个数据对象,带有转字符串的方法toString();

console.log(content.toString());

fs.readFile();  异步

第一个参数是文件路径 第二个参数是此次读取文件的回调(有两个参数第一个参数是错误信息对象 第二个参数是读取到的内容)

fs.readFile("./123.txt", function (err, data) {
    if (err) {
        console.log(err);

    } else {
        console.log(data.toString());
    }
});


创建文件夹 makeDirectory:

  • 第一个参数是文件夹路径  如果有文件夹则不会再创建 
  • 第二个参数是回调函数  创建成功或者创建失败都会回调
fs.mkdir("./abc", function (err) {
    if (err) {
        console.log("失败");

    } else {
        console.log("成功");
    }
});

复制文件:

  • 1.要复制的文件位置  
  • 2.复制到哪的文件位置 
  • 3.回调
fs.copyFile("./123.txt", "./abc/456.txt", function (err) {
    if (err) {
        console.log("复制文件失败");
    } else {
        console.log("复制文件成功");
    }
});

删除:

fs.unlink("./abc/456.txt", function (err) {
    if (err) {
        console.log("删除文件失败");
    } else {
        console.log("删除文件成功");
    }
});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值