您的位置: 翼速应用 > 业内知识 > web前端 > 正文

一起聊聊Node文件系统中的fs异步与同步

本文给大家带来了关于js的相关知识,一起聊聊Node文件系统中的fs异步与同步,希望能给大家带来帮助。


一起聊聊Node文件系统中的fs异步与同步


一起聊聊Node文件系统中的fs异步与同步


同步与异步


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文件系统中的fs异步与同步就聊到这,翼速应用平台内有更多相关资讯,欢迎查阅!


我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题