Node.js File System
2022-04-21
Node.js fs(file system) 即是内置的文件系统模块,用于负责文件的到做以及读取等,可通过 console fs = require("fs")
直接进行引入,因此为了更详细的分清该模块所提供的 API,主要分为:“文件属性读写、文件内容读写、文件操作” 等三种。
fs 模块所提供的方法最大不同之处在于同时还提供了 异步、同步 两个方法,这体现在了
fs.readFile()
和fs.readFileSync()
options], callback)``` 异步读取文件的全部内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 ```fs.readFileSync(path[, options])``` 用于返回 path 内容即同步
| Id | Name | Info | Type |
| --- | ------------------------------------------------------- | ----------------------------------------------------------------------------------- | ---------------------------------------------------- |
| 1 | fs.readFile(path[, options], callback) | 用于异步读取文件 | 文件内容读写 |
| 2 | fs.readFileSync(path[, options]) | 同步读取文件 | 文件内容读写 |
| 3 | fs.read(fd, buffer, offset, length, position, callback) | 在异步模式下更加合理的读取文件 | 文件内容读写 |
| | fd | 通过 ```fs.open()``` 所返回的文件描述 | |
| | buffer | 数据写入缓冲区 | |
| | offset | 缓冲区写入数据写入的偏移量 | |
| | length | 需要读取的字节数 | |
| | position | 文件读取的起始位置 | |
| | callback | 回调函数 | |
| | | err | 返回错误信息 |
| | | bytesRead | 所读取的字节数 |
| | | buffer | 缓冲区对象 |
| 4 | fs.open(path[, flags[, mode]], callback) | 异步打开文件 | 底层文件操作 |
| | path | 文件路径 | |
| | flags | 文件的打开行为 | |
| | | ```a``` | 如果文件不存在则创建文件 |
| | | ```ax``` | 在 ```a``` 的基础上,如果文件路径不存在,就失败 |
| | | ```a+``` | 如果文件不存在就创建 |
| | | ```ax+``` | 在 ```a+``` 的基础上,如果文件路径不存在,则读取失败 |
| | | ```r``` | 以读取的方式打开文件,如果文件不存在则异常 |
| | | ```r+``` | 以读写模式打开文件,如果文件不存在就抛出异常 |
| | | ```rs``` | 以同步的方式读取文件 |
| | | ```rs+``` | 以同步的方式读取和写入文件 |
| | | ```w``` | 以写入模式打开文件,文件不存在则创建 |
| | | ```wx``` | 在 ```w``` 的基础上,如果文件路径存在,文件将会写入失败 |
| | | ```w+``` | 以读写模式打开文件,如果文件不存在则创建 |
| | | ```wx+``` | 在 ```w+``` 的基础上,如果文件路径存在,则文件写入失败 |
| | mode | 打开的权限 | |
| | callback | 回调参数 | |
| 5 | fs.writeFile(file, data[, options], callback) | 通过异步的方式写入文件 | 文件内容读写 |
| | file | 文件名 | |
| | data | 需要写入的数据 | |
| | options | 一个参数对象,包含了编码模式(utf-8)以及 flags(w,写入模式打开文件,文件不存在则创建) | |
| 6 | fs.writeFileSync() | 通过同步的方式写入文件 | 文件内容读写 |
| 7 | fs.stat() | 用于读取文件属性 | 文件属性读写 |
## readFile at readFileSync 读取文件
### fs.readFile()
```js
const fs = require('fs')
fs.readFile('data.txt', 'utf-8', function (err, data) {
if (err) {
console.log(err)
} else {
// File system!
console.log(data.toString())
}
})
data.txt
File system!
1 |
|
通常默认情况下单个 fs.readFIleSync()
参数是不支持输出错误的,因此我们还需要输出函数的方式输出数据,可配合 try...catch
的方式来实现错误输出:
1 | const fs = require('fs') |
fs.read(fd, buffer, offset, length, position, callback) at fs.open and fs.close
Id | Name | Info | Type |
---|---|---|---|
1 | fs.read(fd, buffer, offset, length, position, callback) | 在异步模式下更加合理的读取文件 | 文件内容读写 |
fd | 通过 fs.open() 所返回的文件描述 |
||
buffer | 数据写入缓冲区 | ||
offset | 缓冲区写入数据写入的偏移量 | ||
length | 需要读取的字节数 | ||
position | 文件读取的起始位置 | ||
callback | 回调函数 | ||
err | 返回错误信息 | ||
bytesRead | 所读取的字节数 | ||
buffer | 缓冲区对象 |
1 |
|
fs.open()
Id | Name | Info | Type |
---|---|---|---|
1 | fs.open(path[, flags[, mode]], callback) | 异步打开文件 | 底层文件操作 |
path | 文件路径 | ||
flags | 文件的打开行为 | ||
a |
如果文件不存在则创建文件 | ||
ax |
在 a 的基础上,如果文件路径不存在,就失败 |
||
a+ |
如果文件不存在就创建 | ||
ax+ |
在 a+ 的基础上,如果文件路径不存在,则读取失败 |
||
r |
以读取的方式打开文件,如果文件不存在则异常 | ||
r+ |
以读写模式打开文件,如果文件不存在就抛出异常 | ||
rs |
以同步的方式读取文件 | ||
rs+ |
以同步的方式读取和写入文件 | ||
w |
以写入模式打开文件,文件不存在则创建 | ||
wx |
在 w 的基础上,如果文件路径存在,文件将会写入失败 |
||
w+ |
以读写模式打开文件,如果文件不存在则创建 | ||
wx+ |
在 w+ 的基础上,如果文件路径存在,则文件写入失败 |
1 | const fs = require('fs') |
fs.writeFile()
Id | Name | Info | Type |
---|---|---|---|
1 | fs.writeFile(file, data[, options], callback) | 通过异步的方式写入文件 | 文件内容读写 |
file | 文件名 | ||
data | 需要写入的数据 | ||
options | 一个参数对象,包含了编码模式(utf-8)以及 flags(w,写入模式打开文件,文件不存在则创建) |
1 | // 写入成功: Hello, File system |
fs.writeFileSync()
.fs.writeFileSync()
是 fs.writeFile()
的同步方法,同样也可以使用 try...catch
来支持返回 err
信息。
1 | const fs = require('fs') |
获取文件属性 (fs.stat())
“获取文件属性”是指文件的大小、创建时间、修改时间等信息,可以通过 fs.stat(path[, options], callback)
来进行实现,在这个方法中存在着 fs.stats
类,用于获取文件的属性,常用的为:
Id | Name | Info |
---|---|---|
1 | stat.isFile() | 是否是文件 |
2 | stat.isDirectory() | 是否是目录 |
3 | stat.size() | 文件大小(以字节为单位) |
4 | stat.birthtime() | 创建时间 |
5 | stat.mtime() | 修改时间 |
6 | stat.ctime() | 最后一次更改时间 |
7 | stat.atimeMS() | 最后一次访问时间 |
8 | stat.mtimeMS() | 最后一次修改时间 |
1 | const fs = require('fs') |