一、fs 基础方法:
fs.stat
检测是文件还是目录。fs.mkdir
创建目录。fs.writeFile
创建写入文件。fs.appendFile
追加文件。fs.readFile
读取文件(异步)。fs.readFileSync
读取文件(同步)。fs.readdir
读取目录。fs.rename
重命名。fs.rmdir
删除目录。fs.unlink
删除文件。
1、fs.stat:检测是文件还是目录
fs.js
1 | const fs = require("fs"); |
执行 node fs.js。
1 | console.log(stats): |
补充:
stats.isFile()
如果是文件返回true
,否则返回false
。stats.isDirectory()
如果是目录返回true
,否则返回false
。stats.isBlockDevice()
如果是块设备返回true
,否则返回false
。stats.isCharacterDevice()
如果是字符设备返回true
,否则返回false
。stats.isSymbolicLink()
如果是软链接返回true
,否则返回false
。stats.isFIFO()
如果是FIFO
,返回true
,否则返回false
,FIFO
是UNIX
中的一种特殊类型的命令管道。stats.isSocket()
如果是 Socket 返回true
,否则返回false
。
2、fs.mkdir:创建目录
fs.js
1 | const fs = require("fs"); |
接收参数:
path
:将创建的目录路径。mode
:目录权限(读写权限),默认 0777。callback
:回调,传递异常参数 err。
执行 node fs.js
。
会发现目录下多了一个 images 文件夹。
3、fs.rmdir:删除目录
fs.js
1 | const fs = require("fs"); |
执行 node fs.js
。
会发现目录下 images 文件夹被删除。
4、fs.writeFile:创建写入文件
fs.js
1 | const fs = require("fs"); |
接收参数:
- ``filename` (String) 文件名称。
- ``data` (String | Buffer) 将要写入的内容,可以是字符串或者 buffer 数据。
- ``encoding
(String) 可选。默认
‘utf-8’`,当 data 是 buffer 时,该值应该为 ignored。 - ``mode
(Number) 文件读写权限,默认
438`。 - ``flag
(String) 默认值
‘w’`。 - ``callback
{ Function } 回调,传递一个异常参数
err`。
执行 node fs.js
。
会发现目录下多了一个 index.js 文件夹,并且添加了“hello NodeJS!”的内容。
注意,这样的写入,是清空原文件中的所有数据,然后添加“hello NodeJS!”这句话,即:存在即覆盖,不存在即创建。
5、fs.unlink:删除文件
fs.js
1 | const fs = require("fs"); |
执行 node fs.js
。
会发现目录下 index.js 文件被删除。
6、fs.appendFile:追加文件
fs.js
1 | const fs = require("fs"); |
执行 node fs.js
。
会发现目录下 index.js 文件后有追加了一段话“追加的内容”。
7、fs.readFile:读取文件
fs.js
1 | const fs = require("fs"); |
执行 node fs.js
。
1 | console.log(data) |
8、fs.readdir:读取目录
fs.js
1 | const fs = require("fs"); |
执行 node fs.js
。
1 | console.log(data) |
9、fs.rename:重命名
fs.js
1 | const fs = require("fs"); |
执行 node fs.js
。
会发现目录下 index.js 文件被修改为 new_index.js。
10、补充:fs.rename 还可以剪切
fs.js
1 | const fs = require("fs"); |
执行 node fs.js
。
会发现目录下 new_index.js 文件被移动到了 node_modules 目录下。
二、fs 案例
1、判断是否有 upload 目录
fsDemo.js
1 | const fs = require("fs"); |
执行 fsDemo.js。
打印结果:
1 | console.log(stats.isDirectory()); // true |
有 upload 目录,你可以做更多操作!
2、读取目录全部文件
fsDemo.js
1 | const fs = require("fs"); |
执行 fsDemo.js。
打印结果:
1 | [ 'fs.js', 'fsDemo.js', 'fsStream.js', 'upload' ] |
三、fs 流
1、fs 流及其读取
首先创建一个 index.js 文件,并添加测试文本。
fsStream.js
1 | const fs = require("fs"); |
执行 fsStream.js。
打印结果:
1 | 1 接收到:18 |
2、流的写入
fsStream.js
1 | const fs = require("fs"); |
执行 fsStream.js。
打开 index.js 文件,发现里面内容变成了“存入数据…”。
打印结果:
1 | 写入完成! |
以上我们就通过流的形式进行了读取和写入的操作。