• 技术文章 >web前端 >js教程

    Node文件系统:fs异步与同步(文件读写)

    藏色散人藏色散人2022-08-08 15:12:21转载92

    同步与异步

    fs中 带Sync的就是同步方式 不带的就是异步

    在这先对同步和异步进行区别

    同步:前面的代码先执行 后面的代码需要等待前面的代码执行完毕才会执行

    异步:代码的执行不分先后 也就是说前面的代码执行 不会导致后面的代码阻塞 所以异步代码的执行结果的顺序是不一定的

    在fs中对于文件的操作有异步和同步两种方式,异步中又分为普通异步和Promise异步两种 具体看代码

    options中的flag的取值及含义

    r: 读取文件,文件不存在则报错
    r+:读取并写入文件,如果文件不存在则报错
    rs:以同步的方式读取文件并通知操作系忽略本地文件系统缓存。(一般不用)
    w:写入文件。如果文件不存在则创建该文件,如果文件存在则覆盖
    wx:作用和w类似,如果路径已存在则失败。
    w+:读取并写入文件。如果文件不存在则创建该文件,如果文件存在则覆盖
    wx+:和w+类型,如果路径已存在则失败。
    a:追加写入文件,如果文件不存在则创建文件
    ax:作用和a类型,如果路径已存在则失败。
    a+: 读取并追加写入文件,如果文件不存在则创建文件
    ax+:作用和a+类似,如果路径已存在则失败。

    使用之前先导入模块

    let fs=require('fs');

    一. 读取文件

    1.readFileSync(path[, options]) 同步读取文件

    path: 文件路径

    options:可选参数 用于配置 读取文件的options都一样

    //  同步读取 需要使用一个变量来接收读取出来的数据
    let data=fs.readFileSync(path,{  // path为文件的路径
    		encoding:'utf8',  // 指定字符集
    		flag:'r'		  // 指定读取的模式  具体上面有
    });	
    console.log(data.toString());   // 默认读出来的是buffer类型 使用toString()转为字符串

    2. readFile(path,[,options],callback(error,data)) 普通异步去读文件

    // 普通异步读取不需要变量 直接在回调函数中读取数据  需要注意的是:
    // 回调函数接收两个参数 第一个是error 也就是异常 说明文件读取失败 如果error为null 则读取成功 data即数据
    fs.readFile(path,{encoding:'utf8',flag:'r'},function(error,data){
        console.log(data.toString())
    });

    3. fs.promises.readFile(path[, options]) promise方式读取文件

    	// fs.promises.xxx 返回的是一个promise的对象 需要学习promise的语法 then()接收一个参数data 即数据
    fs.promises.readFile(path).then(data=>{
       	console.log(data.toString());
    })
    // 或
    let fsPromise=fs.promises.readFile(path);
    fsPromise.then(data=>{
    	console.log(data.toString());
    })

    二. 写入文件

    appendFile效果和writeFile中flag:'a+'一样

    path:文件路径 data为写入的数据 option同上

    1. fs.writeFileSync(file, data[, options]) 同步写入文件

    // data为需要写入的数据 options同上 写入的方式 a+为追加写入方式
    fs.writeFileSync(path,data,{flag:'a+'}); // 返回值为undefined

    2. fs.appendFileSync(file, data[, options]) 同步追加方式写入文件

    fs.appendFileSync(path,data,{});  // 返回值为undefined

    3. fs.writeFile(file, data[, options],callback) 普通异步写入

    fs.writeFile(path,data,{flag:'a+'},function(error){
    	if(err){
    		console.log("写入失败");
    	}else{
    		console.log("写入成功");
    	}})

    4. fs.promises.writeFile(file, data[, options]) promise异步方式写入

    fs.promises.writeFile(path,data,{flag:'a+'});  // 写入操作 没有返回值 也就不需要then了

    5. fs.appendFile(path, data[, options], callback) 异步追加方式写入文件

    fs.appendFile(path,appendData,function(){		})

    6. fs.promises.appendFile(path, data[, options]) promise方式追加写入文件

    fs.promises.writeFile(path,data);

    【推荐:node.js视频教程

    以上就是Node文件系统:fs异步与同步(文件读写)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:fs node
    上一篇:归纳整理ES6中的class类知识点 下一篇:一文详解node path模块的用法
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 详解Node.js如何安装下载并运行(附常用命令)• 聊聊Node.js的模块化开发• 什么是CommonJS?Nodejs中如何自定义模块?• 深入理解NodeJs异步编程的含义
    1/1

    PHP中文网