简单学习一下Node的fs模块,写一些小的脚本,实现一些小功能。
希望能够通过学习,替代一些需要人力去实现的工作。
fs简介
fs
即文件系统file system
的意思。
它是Node内置的原生模块之一,这意味着你不需要通过下载依赖就可以使用它。
只需在要使用它的地方使用如下的方式进行引入即可。
1 | const fs = require('fs'); |
以下代码都默认已经引入了fs模块
Node环境为我们提供了利用JavaScript语法去操作文件的能力,而这种能力是浏览器环境下的javascript所不具有的。
读文件
在脚本的同级目录下创建文件hello.txt
,内容放上Hello world
。
同步文件读取
如果不指定读取方式的字符集,那么默认的读取字符集是Buffer类型的数据。
1 | let data = fs.readFileSync('hello.txt', 'utf-8') |
异步文件读取
更推荐使用异步方法,因为这不会阻塞程序的执行。
1 | fs.readFile('text.txt', 'utf-8', (err, data) => { |
写文件
可选的flag参数:
- w 写入文件
- a 追加文件
- r 读取文件
1 | fs.writeFile('text2.txt', 'Hello ntnyq', { flag: 'w'}, err => { |
创建目录
在当前目录下创建名为text
的新目录。
若目录已经存在,则提示file already exists
的错误。
1 | fs.mkdir('text', err => { |
读取目录
读取目录下的所有文件,返回读取的目录下包含的所有文件名的数组。
若目标目录为空目录,那么得到的结果会是一个空数组。若目标目录不存在,则会直接报错
ENOENT: no such file or directory
。
1 | fs.readdir('foo/bar', (err, files) => { |
获取文件信息
利用如下方法可以读取文件信息对象,可以再利用对象的方法来做别的判断。
- isFile() 是否为文件
- isDirectory() 是否为目录
1 | fs.stat('text.txt', (err, stats) => { |
创建读取流
1 | let stream = fs.createReadStream('text.txt'); |
创建写入流
1 | let stream = fs.createWriteStream('text.txt'); |