node中fs的用法总结

fs模块为nodejs的核心模块之一,主要处理文件的读写、复制、s删除、重命名等操作。当需要使用该模块时,需要先导入该文件

var fs = require('fs');

nodejs文件系统中的方法均有异步和同步两种版本,例如读取文件内容的函数有异步的fs.readFile()和同步的fs.readFileSync().
NodeJS 中,标识位代表着对文件的操作方式,如可读、可写、即可读又可写等等,在下面用一张表来表示文件操作的标识位和其对应的含义。

  • r:读取
  • w:写入
  • s:同步
  • +:增加相反操作
  • x:排他方式

r+ 和 w+ 的区别,当文件不存在时,r+ 不会创建文件,而会抛出异常,但 w+ 会创建文件;如果文件存在,r+ 不会自动清空文件,但 w+ 会自动把已有文件的内容清空。

主要用法:(路径、options、回调函数)。其中options可写可不写。主要指:
  • encoding编码(默认utf8)
  • mode文件读写权限 (默认438)
  • flag 默认“w”
1.fs.stat 检测是文件还是目录
const fs = require('fs');
fs.stat('./module',(err,data)=>{
    if (err) {
        console.log(err);
        return;
        
    }  
    console.log(`是文件:${data.isFile()}`);
    console.log(`是目录:${data.isDirection()}`);
2.fs.mkdir 创建目录 用法同上
const fs = require('fs');
fs.mkdir('./test',(err)=>{
    if (err) {
        console.log("创建失败");
        return;
    }
    console.log("创建成功");
    
})
3.fs.writeFile 创建写入文件 用法:(路径及文件名称、写入内容、回调函数)
const fs = require('fs');
fs.writeFile('./write.js','你好',(err)=>{
    if (err) {
        console.log(err);
        return
        
    }
    console.log("创建写入成功")
​
})

fs.writeFile会覆盖原内容.

4.fs.appendFile 写入文件 用法同上
const fs = require('fs');
fs.appendFile('./write.js','\n插入的文字',(err)=>{ // \n为换行符
    if (err) {
        console.log("写入失败"); 
    }
    console.log("写入成功");  
})
5.fs.readFile 读取文件
const fs = require('fs');
fs.readFile('./write.js',(err,data)=>{
    if (err) {
        console.log("读取错误")
        return;
    }
    console.log(data);//输出十六进制数据
    console.log(data.toString());//将十六进制转化为字符串
})
6.fs.readdir 读取目录
const fs = require('fs');
fs.readdir('./nodespace',(err,data)=>{
    if (err) {
        console.log("读取失败"); 
    }
    console.log(data);  
})
7.fs.rename 重命名 :1表示重命名,2表示移动文件 (用法:原文件路径及名称,新命名文件路径及名称)

重命名功能

const fs = require('fs');
fs.rename('./write.js','./write1.js',(err)=>{
    if (err) {
        console.log("重命名失败"); 
    }
    console.log("重命名成功");  
})

移动文件功能只需在路径中修改即可

8.fs.rmdir 删除目录 用法同上
9.fs.uplink 删除文件 用法同上
10.fs.createReadStream以流的方式读取文件
const fs = require('fs')

let readStream = fs.createReadStream('./data/input.txt')

var count = 0
var str = ''
readStream.on('data',(data)=>{
    str += data
    count++
})
 readStream.on('end',()=>{
     console.log(str)
     console.log(count)
 })
10.fs.createWariteStream以流的方式读取文件
const fs = require('fs')
var strCont = ''
for(var i=0;i<100;i++){
    strCont+='我们都一样,你知道我的梦,你知道我的痛,你知道我们感受都相同\n'
}

let writeStream = fs.createWriteStream('./data/write.txt')

writeStream.write(strCont)    //执行写入内容
writeStream.end()             //标记文件末尾,才能监听写入完成事件

//监听写入完成事件
writeStream.on('finish',()=>{
    console.log('写入完成')
})
11.管道流(读取文件中的数据复制到另一个文件)
const fs = require('fs')

let readStream = fs.createReadStream('./data/write.txt')
let writeStream = fs.createWriteStream('./data/copy.txt')

readStream.pipe(writeStream)
Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐