fs模块的方法分类
按操作类型分类
- 增
fs.mkdir
fs.writeFile
fs.appendFile
- 查
fs.readFile
fs.readfir
fs.stat
fs.exists
- 删
fs.rmdir
fs.unlink
- 改
fs.rename
按操作对象分类
- 文件
fs.readFile
fs.writeFile
fs.appendFile
fs.unlink
- 目录
fs.readdir
fs.mkdir
fs.rmdir
- 其他
fs.stat
fs.rename
fs.exists
fs模块的方法列表
fs.exists() 判断文件或者目录是否存在
var filePath = "./docs/log/log.txt"
var dirPath = "./docs/image"
fs.exists(filePath, (data) => {
// exists方法的回调函数 只有一个参数 表明输入的目录或文件是否存在
console.log(data) // true 或者 false
})
fs.stat() 检测是文件还是目录
fs.stat('../module/index.js', (err, data) => {
if (err) {
console.log(err)
return
}
console.log(`是文件:${data.isFile()}`)
console.log(`是目录:${data.isDirectory()}`)
})
fs.mkdir() 创建目录
/**
* path 将创建的目录路径
* mode 目录的权限(读写权限),默认777
* callback 回调函数,传参异常的err
*/
fs.mkdir("./css", (err) => {
if (err) {
console.log(err)
return
}
console.log('目录已经创建成功')
})
fs.writeFile() 创建并写入文件
// 如果文件已经存在,会直接覆盖上一次的内容
fs.writeFile("./css/public.css", '.text-center{text-align:center}', (err) => {
if (err) {
console.log(err)
return
}
console.log('文件创建并写入成功')
})
fs.appendFile() 追加文件内容
// 如果文件存在,那么会在文件末尾 追加内容
// 如果文件不存在,那么会先创建文件,在写入文件
// appendFile无法自动创建文件夹
fs.appendFile('./css/theme.css', `.custom-165DAA .bg-default {
background-color: #165DAA;
}\n`, (err) => {
if (err) {
console.log(err)
return
}
console.log('内容追加成功')
})
fs.readFile() 读取文件
fs.readFile("./css/theme.css", function(err, data) {
if (err) {
console.log(err)
return
}
console.log(data.toString()) // 把 Buffer转换成string类型
})
fs.readdir() 读取文件和目录 只会读取一层 不会递归读取
fs.readdir('./css', function(err, data) {
if (err) {
console.log(err)
return
}
console.log(data)
})
fs.rename() 重命名 或者 移动文件
// 旧文件和新文件所在的目录必须存在 无法自动创建
fs.rename('./css/idex.css', './js/index.css', (err) => {
if(err) {
console.log(err)
return
}
console.log('rename成功')
})
fs.rmdir() 删除目录
// 目录中存在文件 无法删除 只有先删除文件 再删除目录
fs.rmdir('./js', (err) => {
if(err) {
console.log(err)
return
}
console.log('目录删除成功')
})
fs.unlink() 删除文件
fs.unlink('./css/theme.css', (err) => {
if(err) {
console.log(err)
return
}
console.log('文件删除成功')
})
fs.createReadStream() 读取文件流
方法的第二个参数可以传入配置项
encodeing
返回的编码格式,设置为utf8
以后,就不会以流的形式返回flags
文件操作符,用什么模式打开文件,有r
,w
,a
,r+
,w+
等等mode
文件的权限 最大权限777
var str = ''
var count = 0
var readStream = fs.createReadStream('../txt/index.txt', {encoding:'utf8'})
readStream.on('data', (data) => {
str += data
count ++
})
readStream.on('end', () => {
console.log('文件读取成功')
console.log(count)
})
readStream.on('error', (err) => {
console.log(err)
})
fs.createWriteStream() 写入文件流
var str = ''
for(let i = 0; i < 2000; i++) {
str += '你好啊,nodejs!\n'
}
var writeStream = fs.createWriteStream('../txt/index1.txt', {
flags: 'a'
})
writeStream.write(str)
writeStream.end()
writeStream.on("finish", () => {
console.log('文件流写入成功')
})
writeStream.on('error', (err) => {
console.log(err)
})
fs.pipe() 管道流
var readStream = fs.createReadStream('../txt/index.txt', {encoding:'utf8'})
var writeStream = fs.createWriteStream('../txt/index1.txt', {
flags: 'w'
})
readStream.pipe(writeStream)