[TOC] <br/><br/><br/> # <b style="color:#4F4F4F;">简介说明</b> ``` 版本:fs 作用:文件操作模块 ``` <br/> # <b style="color:#4F4F4F;">fs</b> <br/> # <span style="color:#619BE4">*open()</span> ***** 异步地打开文件 <br/> ### 返回类型 ``` None ``` <br/> ### 参数说明 <b style="color:#808080;">path :</b> * 类型:字符串 * 默认值:无 * 描述:文件路径 * 可选值:[ ] <b style="color:#808080;">flag:</b> * 类型:字符串 * 默认值:无 * 描述:访问模式 * 可选值:[ ] <b style="color:#808080;">mode :</b> * 类型:字符串 * 默认值:无 * 描述:访问权限 * 可选值:[ ] <b style="color:#808080;">callback :</b> * 类型:fn * 默认值:无 * 描述:回调函数 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red;">1. 举例说明</span> ``` fs.open('./package.json', 'r',function (err, fd) { console.log(fd); }); ``` <br/> # <span style="color:#619BE4">*openSync()</span> ***** 同步地打开文件 <br/> # <span style="color:#619BE4">*opendir()</span> ***** 异步地打开目录 <br/> ### 参数说明 <b style="color:#808080;">path :</b> * 类型:字符串 * 默认值:无 * 描述:文件路径 * 可选值:[ ] <b style="color:#808080;">options:</b> * 类型:字符串 * 默认值:无 * 描述:可选参数 * 可选值:[ ] <b style="color:#808080;">callback :</b> * 类型:fn * 默认值:无 * 描述:回调函数 * 可选值:[ ] <br/> # <span style="color:#619BE4">*opendirSync()</span> ***** 同步地打开目录 <br/> # <span style="color:#619BE4">*createReadStream()</span> ***** 创建一个读取文件流stream对象 <br/> ### 参数说明 <b style="color:#808080;">path :</b> * 类型:字符串 * 默认值:无 * 描述:读取的文件路径 * 可选值:[ ] <b style="color:#808080;">options :</b> * 类型:对象 * 默认值:无 * 描述:可选参数 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red;">1. 举例说明</span> ``` const fs = require("fs"); let readStream = fs.createReadStream("./README.md", {encoding: 'utf8'}); readStream.on("open", (data) => { console.log('打开了', data) }); readStream.on("data", (data) => { console.log("数据来了!"); console.log(data); console.log("已经读取的字节数", readStream.bytesRead); }); readStream.on("close", (data) => { console.log('guanle') }); console.log(readStream.path + "哈哈哈"); ``` <span style="color:red;">2. 判断流</span> ``` const readable = getReadableStreamSomehow(); readable.on('readable', () => { let chunk; while (null !== (chunk = readable.read())) { console.log(`接收到 ${chunk.length} 字节的数据`); } }); ``` <br/> # <span style="color:#619BE4">*createWriteStream()</span> ***** 创建一个写入文件流,详见stream <br/> ### 参数说明 <b style="color:#808080;">path :</b> * 类型:字符串 * 默认值:无 * 描述:写入的文件路径 * 可选值:[ ] <b style="color:#808080;">options :</b> * 类型:对象 * 默认值:无 * 描述:可选参数 * 可选值:[ ] <br/> # <span style="color:#619BE4">*appendFile()</span> ***** 异步地将数据追加到文件,如果文件尚不存在则创建该文件 <br/> ### 参数说明 <b style="color:#808080;">path :</b> * 类型:字符串 * 默认值:无 * 描述:文件路径,可以是fd,为已经打开的文件追加 * 可选值:[ ] <b style="color:#808080;">data:</b> * 类型:字符串 * 默认值:无 * 描述:文件数据 * 可选值:[ ] <b style="color:#808080;">options :</b> * 类型:对象 * 默认值:无 * 描述:参数{ encoding | mode | flag } * 可选值:[ ] <b style="color:#808080;">callback :</b> * 类型:fn * 默认值:无 * 描述:回调函数 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red;">1. 举例说明</span> ``` fs.appendFile('message.txt', '追加的数据', (err) => { if (err) throw err; console.log('数据已追加到文件'); }); ``` <br/> # <span style="color:#619BE4">*appendFileSync()</span> ***** 同步地将数据追加到文件,如果文件尚不存在则创建该文件 <br/> # <span style="color:#619BE4">*write()</span> ***** 异步将 buffer 写入到 fd 指定的文件 <br/> # <span style="color:#619BE4">*writeSync()</span> ***** 同步将 buffer 写入到 fd 指定的文件 <br/> # <span style="color:#619BE4">*writeFile()</span> ***** 当 file 是一个文件名时,异步地将数据写入到一个文件,如果文件已存在则覆盖该文件 <br/> ### 参数说明 <b style="color:#808080;">file :</b> * 类型:字符串 * 默认值:无 * 描述:文件句柄或文件名 * 可选值:[ ] <b style="color:#808080;">data :</b> * 类型:buffer * 默认值:无 * 描述:写入的数据 * 可选值:[ ] <b style="color:#808080;">options:</b> * 类型:对象 * 默认值:无 * 描述:参数选项 * 可选值:[ ] <b style="color:#808080;">callback:</b> * 类型:fn * 默认值:无 * 描述:回调函数 * 可选值:[ ] <br/> # <span style="color:#619BE4">*writeFileSync()</span> ***** 当 file 是一个文件名时,异步地将数据写入到一个文件,如果文件已存在则覆盖该文件 <br/> # <span style="color:#619BE4">*writev()</span> ***** 使用 writev() 将一个 ArrayBufferView 数组异步写入 fd 指定的文件 <br/> # <span style="color:#619BE4">*writevSync()</span> ***** 使用 writev() 将一个 ArrayBufferView 数组同步写入 fd 指定的文件 <br/> # <span style="color:#619BE4">*read()</span> ***** 异步地读取文件内容 <br/> ### 参数说明 <b style="color:#808080;">fd:</b> * 类型:整型 * 默认值:无 * 描述:文件操作句柄 * 可选值:[ ] <b style="color:#808080;">buffer :</b> * 类型:buffer * 默认值:无 * 描述:二进制对象 * 可选值:[ ] <b style="color:#808080;">offset :</b> * 类型:整型 * 默认值:无 * 描述:buffer 中开始写入的偏移量 * 可选值:[ ] <b style="color:#808080;">length :</b> * 类型:整型 * 默认值:无 * 描述:指定要读取的字节数 * 可选值:[ ] <b style="color:#808080;">position :</b> * 类型:整型 * 默认值:无 * 描述:指定从文件中开始读取的位置 * 可选值:[ ] <b style="color:#808080;">callback :</b> * 类型:fn * 默认值:无 * 描述:回调函数 * 可选值:[ ] <br/> # <span style="color:#619BE4">*readSync()</span> ***** 同步地读取文件内容 <br/> # <span style="color:#619BE4">*readdir()</span> ***** 异步读取目录内容 <br/> ### 参数说明 <b style="color:#808080;">path :</b> * 类型:字符串 * 默认值:无 * 描述:读取目录 * 可选值:[ ] <b style="color:#808080;">options :</b> * 类型:对象 * 默认值:无 * 描述:可选参数 * 可选值:[ ] <b style="color:#808080;">callback :</b> * 类型:fn * 默认值:无 * 描述:回调函数 * 可选值:[ ] <br/> # <span style="color:#619BE4">*readdirSync()</span> ***** 同步读取目录内容 <br/> # <span style="color:#619BE4">*readFile()</span> ***** 异步地读取文件的全部内容。 <br/> ### 参数说明 <b style="color:#808080;">path :</b> * 类型:字符串 * 默认值:无 * 描述:文件路径 * 可选值:[ ] <b style="color:#808080;">options :</b> * 类型:{ encoding: BufferEncoding, flag?: OpenMode } | BufferEncoding * 默认值:无 * 描述:可选参数 * 可选值:[ ] <b style="color:#808080;">callback :</b> * 类型:fn * 默认值:无 * 描述:回调函数 * 可选值:[ ] <br/> # <span style="color:#619BE4">*readFileSync()</span> ***** 同步地读取文件的全部内容。 <br/> ### 示例内容 <span style="color:red;">1. 举例说明</span> ``` const fs = require("fs"); var data = fs.readFileSync('./page/index.js'); console.log("同步读取: " + data.toString()); ``` <br/> # <span style="color:#619BE4">*readlink()</span> ***** readlink <br/> # <span style="color:#619BE4">*readlinkSync()</span> ***** readlinkSync <br/> # <span style="color:#619BE4">*access()</span> ***** 测试用户对 path 指定的文件或目录的权限 <br/> ### 参数说明 <b style="color:#808080;">path :</b> * 类型:字符串 * 默认值:无 * 描述:文件路径 * 可选值:[ ] <b style="color:#808080;">mode :</b> * 类型:字符串 * 默认值:无 * 描述:访问模式 * 可选值:[ ] <b style="color:#808080;">callback :</b> * 类型:fn * 默认值:无 * 描述:回调函数 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red;">1. 举例说明</span> ``` 不推荐open之前使用access检测,无法保证原子性 const file = 'package.json'; // 检查当前目录中是否存在该文件。 fs.access(file, fs.constants.F_OK, (err) => { console.log(`${file} ${err ? '不存在' : '存在'}`); }); // 检查文件是否可读。 fs.access(file, fs.constants.R_OK, (err) => { console.log(`${file} ${err ? '不可读' : '可读'}`); }); // 检查文件是否可写。 fs.access(file, fs.constants.W_OK, (err) => { console.log(`${file} ${err ? '不可写' : '可写'}`); }); // 检查当前目录中是否存在该文件,以及该文件是否可写。 fs.access(file, fs.constants.F_OK | fs.constants.W_OK, (err) => { if (err) { console.error( `${file} ${err.code === 'ENOENT' ? '不存在' : '只可读'}`); } else { console.log(`${file} 存在,且它是可写的`); } }); ``` <br/> # <span style="color:#619BE4">*accessSync()</span> ***** 同步地测试用户对 path 指定的文件或目录的权限 <br/> ### 参数说明 <b style="color:#808080;">path :</b> * 类型:字符串 * 默认值:无 * 描述:文件路径 * 可选值:[ ] <b style="color:#808080;">mode :</b> * 类型:字符串 * 默认值:无 * 描述:访问模式 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red;">1. 举例说明</span> ``` try { fs.accessSync('etc/passwd', fs.constants.R_OK | fs.constants.W_OK); console.log('可以读写'); } catch (err) { console.error('无权访问'); } ``` <br/> # <span style="color:#619BE4">*existsSync()</span> ***** 如果传入路径存在,则返回true <br/> # <span style="color:#619BE4">*watch()</span> ***** 异步监视 filename 的更改,其中 filename 是文件或目录 <br/> # <span style="color:#619BE4">*watchFile()</span> ***** 异步监视 filename 的更改。 每当访问文件时都会调用 listener 回调。 <br/> # <span style="color:#619BE4">*unwatchFile()</span> ***** 停止监视 filename 的变化 <br/> # <span style="color:#619BE4">*utimes()</span> ***** 异步更改 path 指向的对象的文件系统时间戳 <br/> # <span style="color:#619BE4">*utimesSync()</span> ***** 同步更改 path 指向的对象的文件系统时间戳 <br/> # <span style="color:#619BE4">*realpath()</span> ***** 异步返回绝对路径 <br/> # <span style="color:#619BE4">*realpath.native()</span> ***** 异步返回绝对路径 <br/> # <span style="color:#619BE4">*realpathSync()</span> ***** 同步返回绝对路径 <br/> # <span style="color:#619BE4">*realpathSync.native()</span> ***** 同步返回绝对路径 <br/> # <span style="color:#619BE4">*rename()</span> ***** 异步地将 oldPath 上的文件重命名为 newPath 提供的路径名 <br/> # <span style="color:#619BE4">*renameSync()</span> ***** 同步地将 oldPath 上的文件重命名为 newPath 提供的路径名 <br/> # <span style="color:#619BE4">*rmdir()</span> ***** 异步删除目录 <br/> # <span style="color:#619BE4">*rmdirSync()</span> ***** 同步删除目录 <br/> # <span style="color:#619BE4">*mkdir()</span> ***** 异步地创建目录 <br/> ### 参数说明 <b style="color:#808080;">path :</b> * 类型:字符串 * 默认值:无 * 描述:文件路径 * 可选值:[ ] <b style="color:#808080;">options :</b> * 类型:字符串 * 默认值:无 * 描述:可选参数 * 可选值:[ ] <b style="color:#808080;">callback :</b> * 类型:fn * 默认值:无 * 描述:回调函数 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red;">1. 举例说明</span> ``` fs.mkdir("./mad/mad", {recursive: true}, function (err) { console.log(err); }); ``` <br/> # <span style="color:#619BE4">*mkdirSync()</span> ***** 同步地创建目录 <br/> # <span style="color:#619BE4">*mkdtemp()</span> ***** 创建一个唯一的临时目录 <br/> ### 参数说明 <b style="color:#808080;">prefix :</b> * 类型:字符串 * 默认值:无 * 描述:指定前缀 * 可选值:[ ] <b style="color:#808080;">options :</b> * 类型:对象 * 默认值:无 * 描述:可选参数 * 可选值:[ ] <b style="color:#808080;">callback :</b> * 类型:fn * 默认值:无 * 描述:回调函数 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red;">1. 举例说明</span> ``` const fs = require('fs'); fs.mkdtemp("./temp", (err, folder) => { if (err) throw err; console.log(folder); // 打印: /tmp/目录-itXde2 或 C:\Users\...\AppData\Local\Temp\目录-itXde2 }); ``` <br/> # <span style="color:#619BE4">*mkdtempSync()</span> ***** 同步创建临时目录,返回创建的目录路径。 <br/> # <span style="color:#619BE4">*stat()</span> ***** 异步获取文件信息 <br/> # <span style="color:#619BE4">*statSync()</span> ***** 同步获取文件信息 <br/> # <span style="color:#619BE4">*truncate()</span> ***** 异步的 truncate(2)。 除了可能的异常,完成回调没有其他参数。 文件描述符也可以作为第一个参数传入 <br/> # <span style="color:#619BE4">*truncateSync()</span> ***** 同步的 truncate(2)。 除了可能的异常,完成回调没有其他参数。 文件描述符也可以作为第一个参数传入 <br/> # <span style="color:#619BE4">*symlink()</span> ***** 异步的 symlink(2),它会创建名为 path 的链接,该链接指向 target <br/> # <span style="color:#619BE4">*symlinkSync()</span> ***** 同步的 symlink(2),它会创建名为 path 的链接,该链接指向 target <br/> # <span style="color:#619BE4">*unlink()</span> ***** 异步地删除文件或符号链接。 除了可能的异常,完成回调没有其他参数。 <br/> # <span style="color:#619BE4">*unlinkSync()</span> ***** 同步地删除文件或符号链接。 除了可能的异常,完成回调没有其他参数。 <br/> # <span style="color:#619BE4">*chmod()</span> ***** 异步的更改文件权限 <br/> ### *权限附录 <span style="color:red;">1. 举例说明</span> ![权限附录](images/权限附录.png) <br/> # <span style="color:#619BE4">*chmodSync()</span> ***** 同步的更改文件权限 <br/> # <span style="color:#619BE4">*chown()</span> ***** 异步地更改文件的所有者和群组 <br/> # <span style="color:#619BE4">*chownSync()</span> ***** 同步地更改文件的所有者和群组 <br/> # <span style="color:#619BE4">*close()</span> ***** 异步的 close()。 除了可能的异常,完成回调没有其他参数。 <br/> # <span style="color:#619BE4">*closeSync()</span> ***** 同步的 close()。 除了可能的异常,完成回调没有其他参数。 <br/> # <span style="color:#619BE4">*copyFile()</span> ***** 异步地将 src 拷贝到 dest。 <br/> ### 参数说明 <b style="color:#808080;">src :</b> * 类型:字符串 * 默认值:无 * 描述:要拷贝的源文件名 * 可选值:[ ] <b style="color:#808080;">dest :</b> * 类型:字符串 * 默认值:无 * 描述:拷贝操作的目标文件名 * 可选值:[ ] <b style="color:#808080;">flags :</b> * 类型:对象 * 默认值:无 * 描述:用于拷贝操作的修饰符 * 可选值:[ ] <b style="color:#808080;">callback :</b> * 类型:fn * 默认值:无 * 描述:回调函数 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red;">1. 举例说明</span> ``` const fs = require('fs'); // 默认情况下将创建或覆盖目标文件。 fs.copyFile('源文件.txt', '目标文件.txt', (err) => { if (err) throw err; console.log('源文件已拷贝到目标文件'); }); ``` <br/> # <span style="color:#619BE4">*copyFileSync()</span> ***** 同步地将 src 拷贝到 dest <br/> # <span style="color:#619BE4">*fchmod()</span> ***** fchmod <br/> # <span style="color:#619BE4">*fchmodSync()</span> ***** fchmodSync <br/> # <span style="color:#619BE4">*fchown()</span> ***** fchown <br/> # <span style="color:#619BE4">*fchownSync()</span> ***** fchownSync <br/> # <span style="color:#619BE4">*fdatasync()</span> ***** fdatasync <br/> # <span style="color:#619BE4">*fdatasyncSync()</span> ***** fdatasyncSync <br/> # <span style="color:#619BE4">*fstat()</span> ***** fstat <br/> # <span style="color:#619BE4">*fstatSync()</span> ***** fstatSync <br/> # <span style="color:#619BE4">*fsync()</span> ***** fsync <br/> # <span style="color:#619BE4">*fsyncSync()</span> ***** fsyncSync <br/> # <span style="color:#619BE4">*ftruncate()</span> ***** ftruncate <br/> # <span style="color:#619BE4">*ftruncateSync()</span> ***** ftruncateSync <br/> # <span style="color:#619BE4">*futimes()</span> ***** fsyncSync <br/> # <span style="color:#619BE4">*futimesSync()</span> ***** futimesSync <br/> # <span style="color:#619BE4">*lchmod()</span> ***** lchmod <br/> # <span style="color:#619BE4">*lchmodSync()</span> ***** lchmodSync <br/> # <span style="color:#619BE4">*lchown()</span> ***** lchmod <br/> # <span style="color:#619BE4">*lchownSync()</span> ***** lchmodSync <br/> # <span style="color:#619BE4">*lstat()</span> ***** lstat <br/> # <span style="color:#619BE4">*lstatSync()</span> ***** lstatSync <br/> # <span style="color:#619BE4">*link()</span> ***** link <br/> # <span style="color:#619BE4">*linkSync()</span> ***** linkSync <br/>