We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
fs(filesystem),该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装
POSIX
可以说,所有与文件的操作都是通过fs核心模块实现
fs
导入模块如下:
const fs = require('fs');
这个模块对所有文件系统操作提供异步(不具有sync 后缀)和同步(具有 sync 后缀)两种操作方式,而供开发者选择
sync
在计算机中有关于文件的知识:
针对文件所有者、文件所属组、其他用户进行权限分配,其中类型又分成读、写和执行,具备权限位4、2、1,不具备权限为0
如在linux查看文件权限位:
linux
drwxr-xr-x 1 PandaShen 197121 0 Jun 28 14:41 core -rw-r--r-- 1 PandaShen 197121 293 Jun 23 17:44 index.md
在开头前十位中,d为文件夹,-为文件,后九位就代表当前用户、用户所属组和其他用户的权限位,按每三位划分,分别代表读(r)、写(w)和执行(x),- 代表没有当前位对应的权限
d
-
标识位代表着对文件的操作方式,如可读、可写、即可读又可写等等,如下表所示:
操作系统会为每个打开的文件分配一个名为文件描述符的数值标识,文件操作使用这些文件描述符来识别与追踪每个特定的文件
Window 系统使用了一个不同但概念类似的机制来追踪资源,为方便用户,NodeJS 抽象了不同操作系统间的差异,为所有打开的文件分配了数值的文件描述符
Window
NodeJS
在 NodeJS 中,每操作一个文件,文件描述符是递增的,文件描述符一般从 3 开始,因为前面有 0、1、2三个比较特殊的描述符,分别代表 process.stdin(标准输入)、process.stdout(标准输出)和 process.stderr(错误输出)
3
0
1
2
process.stdin
process.stdout
process.stderr
下面针对fs模块常用的方法进行展开:
同步读取,参数如下:
结果为返回文件的内容
const fs = require("fs"); let buf = fs.readFileSync("1.txt"); let data = fs.readFileSync("1.txt", "utf8"); console.log(buf); // <Buffer 48 65 6c 6c 6f> console.log(data); // Hello
异步读取方法 readFile 与 readFileSync 的前两个参数相同,最后一个参数为回调函数,函数内有两个参数 err(错误)和 data(数据),该方法没有返回值,回调函数在读取文件成功后执行
readFile
readFileSync
err
data
const fs = require("fs"); fs.readFile("1.txt", "utf8", (err, data) => { if(!err){ console.log(data); // Hello } });
同步写入,有三个参数:
第一个参数为写入文件的路径或文件描述符
第二个参数为写入的数据,类型为 String 或 Buffer
第三个参数为 options,默认值为 null,其中有 encoding(编码,默认为 utf8)、 flag(标识位,默认为 w)和 mode(权限位,默认为 0o666),也可直接传入 encoding
const fs = require("fs"); fs.writeFileSync("2.txt", "Hello world"); let data = fs.readFileSync("2.txt", "utf8"); console.log(data); // Hello world
异步写入,writeFile 与 writeFileSync 的前三个参数相同,最后一个参数为回调函数,函数内有一个参数 err(错误),回调函数在文件写入数据成功后执行
writeFile
writeFileSync
const fs = require("fs"); fs.writeFile("2.txt", "Hello world", err => { if (!err) { fs.readFile("2.txt", "utf8", (err, data) => { console.log(data); // Hello world }); } });
参数如下:
const fs = require("fs"); fs.appendFileSync("3.txt", " world"); let data = fs.readFileSync("3.txt", "utf8");
异步追加写入方法 appendFile 与 appendFileSync 的前三个参数相同,最后一个参数为回调函数,函数内有一个参数 err(错误),回调函数在文件追加写入数据成功后执行
appendFile
appendFileSync
const fs = require("fs"); fs.appendFile("3.txt", " world", err => { if (!err) { fs.readFile("3.txt", "utf8", (err, data) => { console.log(data); // Hello world }); } });
同步拷贝
const fs = require("fs"); fs.copyFileSync("3.txt", "4.txt"); let data = fs.readFileSync("4.txt", "utf8"); console.log(data); // Hello world
异步拷贝
const fs = require("fs"); fs.copyFile("3.txt", "4.txt", () => { fs.readFile("4.txt", "utf8", (err, data) => { console.log(data); // Hello world }); });
同步创建,参数为一个目录的路径,没有返回值,在创建目录的过程中,必须保证传入的路径前面的文件目录都存在,否则会抛出异常
// 假设已经有了 a 文件夹和 a 下的 b 文件夹 fs.mkdirSync("a/b/c")
异步创建,第二个参数为回调函数
fs.mkdir("a/b/c", err => { if (!err) console.log("创建成功"); });
http://nodejs.cn/api/fs.html
https://segmentfault.com/a/1190000019913303
The text was updated successfully, but these errors were encountered:
No branches or pull requests
一、是什么
fs(filesystem),该模块提供本地文件的读写能力,基本上是
POSIX
文件操作命令的简单包装可以说,所有与文件的操作都是通过
fs
核心模块实现导入模块如下:
这个模块对所有文件系统操作提供异步(不具有
sync
后缀)和同步(具有sync
后缀)两种操作方式,而供开发者选择二、文件知识
在计算机中有关于文件的知识:
权限位 mode
针对文件所有者、文件所属组、其他用户进行权限分配,其中类型又分成读、写和执行,具备权限位4、2、1,不具备权限为0
如在
linux
查看文件权限位:在开头前十位中,
d
为文件夹,-
为文件,后九位就代表当前用户、用户所属组和其他用户的权限位,按每三位划分,分别代表读(r)、写(w)和执行(x),- 代表没有当前位对应的权限标识位
标识位代表着对文件的操作方式,如可读、可写、即可读又可写等等,如下表所示:
文件描述为 fd
操作系统会为每个打开的文件分配一个名为文件描述符的数值标识,文件操作使用这些文件描述符来识别与追踪每个特定的文件
Window
系统使用了一个不同但概念类似的机制来追踪资源,为方便用户,NodeJS
抽象了不同操作系统间的差异,为所有打开的文件分配了数值的文件描述符在
NodeJS
中,每操作一个文件,文件描述符是递增的,文件描述符一般从3
开始,因为前面有0
、1
、2
三个比较特殊的描述符,分别代表process.stdin
(标准输入)、process.stdout
(标准输出)和process.stderr
(错误输出)三、方法
下面针对
fs
模块常用的方法进行展开:文件读取
fs.readFileSync
同步读取,参数如下:
结果为返回文件的内容
fs.readFile
异步读取方法
readFile
与readFileSync
的前两个参数相同,最后一个参数为回调函数,函数内有两个参数err
(错误)和data
(数据),该方法没有返回值,回调函数在读取文件成功后执行文件写入
writeFileSync
同步写入,有三个参数:
第一个参数为写入文件的路径或文件描述符
第二个参数为写入的数据,类型为 String 或 Buffer
第三个参数为 options,默认值为 null,其中有 encoding(编码,默认为 utf8)、 flag(标识位,默认为 w)和 mode(权限位,默认为 0o666),也可直接传入 encoding
writeFile
异步写入,
writeFile
与writeFileSync
的前三个参数相同,最后一个参数为回调函数,函数内有一个参数err
(错误),回调函数在文件写入数据成功后执行文件追加写入
appendFileSync
参数如下:
appendFile
异步追加写入方法
appendFile
与appendFileSync
的前三个参数相同,最后一个参数为回调函数,函数内有一个参数err
(错误),回调函数在文件追加写入数据成功后执行文件拷贝
copyFileSync
同步拷贝
copyFile
异步拷贝
创建目录
mkdirSync
同步创建,参数为一个目录的路径,没有返回值,在创建目录的过程中,必须保证传入的路径前面的文件目录都存在,否则会抛出异常
mkdir
异步创建,第二个参数为回调函数
参考文献
http://nodejs.cn/api/fs.html
https://segmentfault.com/a/1190000019913303
The text was updated successfully, but these errors were encountered: