1、fs.stat
- fs.stat(path, callback)
fs.stat是异步方法,用于检测是文件还是目录,path 文件路径,callback(err, stats) stats是文件对象
const fs = require('fs')
fs.stat('hello.js', (error, stats) => {
if (error) {
console.log(error)
} else {
console.log(stats)
console.log(stats.isFile())
console.log(stats.isDirectory())
}
})
- fs.statSync(path)
fs.statSync 同步方法,用于检测文件还是目录,只需要传入路径即可
const fs = require('fs')
const info = fs.statSync('test.html')
console.log(info.isFile())
console.log(info.isDirectory())
console.log(info)
<!--info-->
Stats {
dev: 1926720246,
mode: 33206,
nlink: 1,
uid: 0,
gid: 0,
rdev: 0,
blksize: undefined,
ino: 39969446694184670,
size: 471,
blocks: undefined,
atimeMs: 1595981445303.3115,
mtimeMs: 1593757376987.273,
ctimeMs: 1593757376987.273,
birthtimeMs: 1586518842700.2656,
atime: 2020-07-29T00:10:45.303Z,
mtime: 2020-07-03T06:22:56.987Z,
ctime: 2020-07-03T06:22:56.987Z,
birthtime: 2020-04-10T11:40:42.700Z
}
2、fs.mkdir
- fs.mkdir(path,[mode],callback)
fs.mkdir(path,[mode],callback) 异步方法 创建目录,path是需要创建的目录,[mode]是目录的权限(默认是0777),callback是回调函数
const fs = require('fs')
fs.stat('hello.js', (error, stats) => {
if (error) {
console.log(error)
} else {
console.log(stats)
console.log(stats.isFile())
console.log(stats.isDirectory())
}
})
- fs.mkdirSync(path,[mode])
fs.mkdirSync(path,[mode]) 同步方法 创建目录,path是需要创建的目录,[mode]是目录的权限
const fs = require('fs')
fs.mkdirSync('../test')
3、fs.writeFile
- fs.writeFile(path, data, [options], callback)
fs.writeFile(path, data[, options], callback) path 文件路径 data 要写入文件的数据可以是String 或者 Buffer对象 options 是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 ,flag 为 'w'
如果文件存在,写入的内容会覆盖旧文件内容, 如果文件不存在则创建文件并写入内容
const fs = require('fs')
fs.writeFile('text.txt', 'Hello World', (error) => {
if (error) {
console.log(error)
}
})
- fs.writeFileSync(path, data, [options])
作用与writeFile相同,只是是同步方法
const fs = require('fs')
fs.writeFileSync('text.txt', 'Hello World')
4、fs.appendFile
- fs.appendFile(path, data, [encode], callback)
fs.appendFile(path, data, [encode], callback) path 文件路径 data 要写入文件的数据可以是String 或者 Buffer对象 encode 设置编码
如果文件存在,写入的内容会追加到旧文件内容后面, 如果文件不存在则创建文件并写入内容
const fs = require('fs')
fs.appendFile('text.txt', '采菊东篱下,悠然见南山\n', 'utf-8', (error) => {
if (error) {
console.log(error)
}
})
- fs.appendFileSync(path, data, [options])
作用与appendFile相同,只是是同步方法
const fs = require('fs')
fs.appendFileSync('text.txt', '采菊东篱下, 悠然见南山\n')
5、fs.readFile
- fs.readFile(path, encode, callback)
fs.readFile(path, encode, callback)读取文件 path 文件路径 encode 设置编码,如果不设置此编码格式返回值是Buffer
const fs = require('fs')
fs.readFile('text.txt', (error, data) => {
if (error) {
console.log(error)
}
使用toString()将Buffer转化为String
console.log(data.toString())
})
fs.readFile('text.txt', 'utf-8' , (error, data) => {
if (error) {
console.log(error)
}
console.log(data)
})
- fs.readFileSync(path, data, [options])
作用与readFile相同,只是是同步方法
<!--未使用编码格式-->
const fs = require('fs')
const info = fs.readFileSync('text.txt')
console.log(info.toString())
<!--使用编码格式-->
const info = fs.readFileSync('text.txt', 'utf-8')
console.log(info)
6、fs.readdir
- fs.readdir(path, callback)
fs.readdir(path, callback) 读取目录 path 文件路径 callback有两个参数:error: 错误信息 files:由被读取目录的文件列表组成的数组
const fs = require('fs')
fs.readdir('../JS', (error, files) => {
if (error) {
console.log(error)
}
console.log(files)
})
// [ 'child.html', 'hex-md5.js']
- fs.readdirSync(path)
作用与readdir相同,只是是同步方法
const info = fs.readdirSync('../JS')
console.log(info)
// [ 'child.html', 'hex-md5.js']
7、fs.rename
- fs.rename(oldname, newname, callback)
fs.rename重命名 还可以改变文件类型,一般不要这样做容易导致文件不可用
fs.renameSync 同步函数
const fs = require('fs')
fs.rename('text.txt', 'text1.html', (error) => {
if (error) {
console.log(error)
}
})
const info = fs.renameSync('text1.html', 'text.txt')
console.log(info)
8、fs.rmdir
- fs.rmdir(path, callback)
fs.rmdir 删除空目录,如果目录不为空,则不能删除
fs.rmdirSync() 同步函数
const fs = require('fs')
fs.rmdir('text', (error) => {
if (error) {
console.log(error)
}
})
fs.rmdirSync('text')
9、fs.unlink
- fs.unlink(path, callback)
fs.unlink 删除文件
fs.unlinkSync() 同步函数
const fs = require('fs')
fs.unlink('text/text.js', (error) => {
if (error) {
console.log(error)
}
})
fs.unlinkSync('text/text.js')
10、fs.createReadStream
- fs.createReadStream(path, highWaterMark)
fs.createReadStream 从文件流中读取数据,highWaterMark每次从文件中读取的数据大小默认最多读取64K,读取内容是buffer类型,
const fs = require('fs')
const stream = fs.createReadStream('text/a.txt', { highWaterMark: 30 })
const arr = []
// 每从文件中读取一笔数据就会触发data函数
stream.on('data', (chunk) => {
console.log(chunk.length)
arr.push(chunk)
})
// 读取结束触发end函数
stream.on('end', (chunk) => {
console.log(Buffer.concat(arr).toString())
})
// 报错时执行此函数
stream.on('error', (error) => {
console.log(error)
})
// pause()暂停读取
stream.pause()
// resume()恢复读取
stream.resume()
const fs = require('fs')
const stream = fs.createReadStream('text/a.txt', { highWaterMark: 30 })
const arr = []
let count = 0
stream.on('data', (chunk) => {
// console.log(chunk.length)
count += chunk.length
console.log('count', count);
if (count > 60) {
stream.pause()
}
arr.push(chunk)
})
stream.on('end', (chunk) => {
console.log(Buffer.concat(arr).toString())
})
stream.on('error', (error) => {
console.log(error)
})
11、fs.createWriteStream
fs.createWriteStream() 以流的方式写入文件
const fs = require('fs')
const data = '此中有真意,欲辨已忘言。\n此中有真意,欲辨已忘言。\n结庐在人境,而无车马喧。\n问君何能尔?心远地自偏。\n采菊东篱下,悠然见南山。\n山气日夕佳,飞鸟相与还'
// 创建一个可以写入的流,写入到文件 output.txt 中
const stream = fs.createWriteStream('output.txt')
// 使用 utf8 编码写入数据
stream.write(data, 'utf-8')
// 标记文件末尾
stream.end()
// 数据写入完毕触发finish事件
stream.on('finish', () => {
console.log('finish')
})
// 报错时触发此事件
stream.on('error', (error) => {
console.log(error.stack)
})
12、管道流
管道提供了一个输出流到输入流的机制。通常我们用于从一个流中获取数据并将数据传 递到另外一个流中,从而完成大文件的复制
const fs = require('fs')
const readStream = fs.createReadStream('text/a.txt')
const writeStream = fs.createWriteStream('b.txt')
readStream.pipe(writeStream)
// 这样就将a.txt文件的内容复制到b.txt中了
网友评论