1、读文件
// 使用 require 方法,导入 fs 模块 操作文件const fs = require('fs')fs.readFile('./files/11.txt', 'utf-8', (err, dataStr) => { // 判断 err 能否转为 true,如果 能,则证明读取文件出错了 if (err) return console.log('读取文件失败:' + err.message) console.log(dataStr)})/* * fs.readFile(path[, options], callback)接收三个参数 * path:文件路径【必须】 * options:文件编码【可选,不选为buffer编码,可以设定‘utf-8’】 * callback:异步地读取文件的全部内容。【必选】function(err, data) { err【失败】,【data】成功} * 如果读取文件成功,则 err 为 null, data 是成功之后的数据 * err 是 Error 类型的一个对象,console.log(err instanceof Error) * console.log(err.message) * 如果读取失败,则 err 为一个错误对象, data 为 undefined * Buffer 是二进制的数据,只不过在展示的时候,为了方便展示,操作系统,帮我们把 二进制的 Buffer,转换为了 16进制的格式 * console.log(data instanceof Buffer) * console.log(data.toString()) */
2、写入文件
// fs.writeFile(file, data[, options], callback)const fs = require('fs')// 参数1: 要把文件写入到哪个路径中// 参数2: 要写入的内容// 参数3: 默认为 'utf8'fs.writeFile('./files/2.txt', '666', err => { if (err) return console.log('写入文件失败!' + err.message) console.log('写入文件成功!')})
3、追加内容
// fs.appendFile(path, data[, options], callback)const fs = require('fs')// 参数1: 要把文件写入到哪个路径中// 参数2: 要写入的内容// 参数3: 默认为 'utf8'fs.appendFile('./files/3.txt', '\n888', err => { if (err) return console.log('追加失败!' + err.message) console.log('ok')})
路径问题
console.log(__dirname) // 文件夹绝对路径console.log(__filename) // 文件名绝对路径// 结论:今后在调用 fs 模块,操作文件的时候,如果要提供路径了,一定不要使用相对路径;// 一定要使用 __dirname 做一层拼接fs.readFile(__dirname + '/files/1.txt', 'utf-8', (err, dataStr) => { if (err) return console.log('读取文件失败:' + err.message) console.log(dataStr)})
fs 和 path 结合使用
1、读取文件信息
// fs.stat(path[, options], callback)const fs = require('fs')// 读取文件信息fs.stat(__dirname + '/files/1.txt', (err, stats) => { if (err) return console.log('读取文件信息失败!' + err.message) // 获取文件大小 单位是 字节 Byte console.log(stats) console.log(stats.size) // 获取文件的创建时间 console.log(stats.birthtime) // 判断是否是一个文件 console.log(stats.isFile()) // 判断是否是目录 console.log(stats.isDirectory())})// 读取路径信息fs.stat(__dirname, (err, stats) => { if (err) return console.log(err.message) // 不能直接使用 stats 获取目录的大小 console.log(stats.size)})
2、读取指定目录下的所有文件名称
// fs.readdir(path[, options], callback)const fs = require('fs')fs.readdir(__dirname, (err, filenames) => { if (err) return console.log(err.message) console.log(filenames)})
3、复制文件
// fs.copyFile(src, dest[, flags], callback)const fs = require('fs')// 第一个参数:要复制的文件路径// 第二个参数:要存放的路径// 参数3: 回调函数,包含一个 err 错误对象fs.copyFile(__dirname + '/files/1.txt', __dirname + '/files/1-copy.txt', err => { if (err) return console.log('复制失败!') console.log('ok')})
4、读文件和path模块的关系
const fs = require('fs')const path = require('path')console.log(path.join(__dirname, './files/1.txt'))// 记住:今后只要涉及到路径片段的拼接,一定要使用 path.join() 方法fs.readFile(path.join(__dirname, './files/1.txt'), 'utf-8', (err, dataStr) => { if (err) return console.log(err.message) console.log(dataStr)})