Node3-4基础API----fs(文件系统)

2023-12-29 16:58
文章标签 基础 api 文件系统 fs node3

本文主要是介绍Node3-4基础API----fs(文件系统),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

异步的形式总是将完成回调作为其最后一个参数。 传给完成回调的参数取决于具体方法,但第一个参数始终预留用于异常。 如果操作成功完成,则第一个参数将为 null 或 undefined

1.读取文件操作(readFile)

举个例子(读取文件操作)  同步会先执行完 [尽量用异步]

const fs = require('fs')
fs.readFile('./30_readfile.js','utf8',(err,data)=>{if(err){throw err}else{//输出结果是一个Buffer的(因为没有toString或者在参数那里定义编码格式)
        console.log(data);// console.log(data.toString());
    }
})// 同步操作
const data =  fs.readFileSync('./29_event_remove.js','utf8');
console.log(data);

2.写文件(writeFile)

 

//输出done
const fs = require('fs')fs.writeFile('./text','this is text','utf8',err=>{if(err) throw err;console.log('done')
})//输出done 使用了Buffer
const fs = require('fs')
const content = Buffer.from('this is text')
fs.writeFile('./text',content,err=>{if(err) throw err;console.log('done')
})

 

3.查看文件信息(stats)

 

const fs =require('fs')
fs.stat('./32_stat.js',(err,stats)=>{if(err){throw err}else{console.log(stats.isFile());console.log(stats.isDirectory());console.log(stats);}
})

 

运行结果:

4.重命名(rename)

const fs =require('fs')
fs.rename('./text','text.txt',err=>{if(err) throw errconsole.log('done!');
})

5.unlink

const fs = require('fs')
fs.unlink('./text.txt',err=>{});

6.读文件夹(readdir)

const fs = require('fs')
fs.readdir('./',(err,files)=>{if(err) throw errconsole.log(files);
})

运行结果

7.创建一个文件夹(mkdir)

const fs =require('fs')
fs.mkdir('test',err=>{ })

8.移除一个文件夹(rmdir)

const fs = require('fs')
fs.rmdir('./test',err=>{});

9.监视(watch)[很有用,做本地构建相当方便]

const fs = require('fs')
fs.watch('./',{recursive:true
},(eventType,filename)=>{console.log(eventType,filename);
});

10.readstream

//stream有方向的流 (数据) stream有两个条件按,一个是方向一个是数据
const fs = require('fs')
const rs = fs.createReadStream('./39_readstream.js');
//读一点给一点,类似网速慢加载从上到下
rs.pipe(process.stdout);

11.writestream

const fs =require('fs')
const ws = fs.createWriteStream('./text.txt')
const tid = setInterval(()=>{const num = parseInt(Math.random()*10)console.log(num);if(num<8){ws.write(num + '')}else{clearInterval(tid)ws.end()}
},200)
ws.on('finish',()=>{console.log('done!'); 
})

运行结果

 

12.回调地狱解决

方法一

const fs =require('fs')
const promisify = require('util').promisify;const read = promisify(fs.readFile)
read('./41_promisify.js').then(data=>{console.log(data.toString());}).catch(ex=>{console.log(ex);})

运行结果

方法二

const fs =require('fs')
const promisify = require('util').promisify;const read = promisify(fs.readFile)
// read('./41_promisify.js').then(data=>{
//     console.log(data.toString());// }).catch(ex=>{
//     console.log(ex);// })

async function test(){try{const content= await read('./41_promisify.js')console.log(content.toString());}catch(ex){console.log(ex);}   
}
test();

运行结果跟上面一样

这篇关于Node3-4基础API----fs(文件系统)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/550085

相关文章

使用SpringBoot创建一个RESTful API的详细步骤

《使用SpringBoot创建一个RESTfulAPI的详细步骤》使用Java的SpringBoot创建RESTfulAPI可以满足多种开发场景,它提供了快速开发、易于配置、可扩展、可维护的优点,尤... 目录一、创建 Spring Boot 项目二、创建控制器类(Controller Class)三、运行

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方