技术实践

Node.js之《fs》文件操作

JavaScript 的是没有操作文件的能力,但是 Node 是可以做到的,Node 提供了操作文件系统模块,是 Node 中使用非常重要和

羊先生的头像
羊先生2021.08.23 · 2 分钟阅读 · 35 阅读
Node.js之《fs》文件操作封面
文章正文还需 2 分钟

fs

JavaScript 的是没有操作文件的能力,但是 Node 是可以做到的,Node 提供了操作文件系统模块,是 Node 中使用非常重要和高频的模块,在node开发中必须掌握的一个模块

常见API

fs.stat 检测是文件还是目录

js 复制代码
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.mkdir 创建目录

js 复制代码
onst fs = require('fs')
fs.mkdir('logs', error => {
    if(error) {
        console.log(error)
    } else {
        console.log('目录创建成功!')
    }
})

fs.rmdir 删除目录

js 复制代码
const fs = require('fs')
fs.rmdir('logs', error => {
    if(error) {
        console.log(error)
    } else {
        console.log('成功删除了目录 logs')
    }
})

fs.writeFile 创建写入文件

js 复制代码
const fs = require('fs')
fs.writeFile('logs/hello.log','您好~\n', error => {
    if(error) {
        console.log(error)
    } else {
        console.log('成功写入文件');
    }
})

fs.appendFile 追加文件

js 复制代码
const fs = require('fs')
fs.appendFile('logs/hello.log','hello~\n', error => {
    if(error) {
        console.log(error)
    } else {
        console.log('成功写入文件');
    }
})

fs.readFile 读取文件

js 复制代码
const fs = require('fs')
fs.readFile('logs/hello.log','utf-8', (error, data) => {
    if(error) {
        console.log(error)
    } else {
        console.log(data);
    }
})

fs.unlink 删除文件

js 复制代码
const fs = require('fs')
fs.unlink(`logs/${file}`, error => {
    if(error) {
        console.log(error)
    } else {
        console.log(`成功删除了文件: ${file}`)
    }
})

fs.readdir 读取目录

js 复制代码
const fs = require('fs')
fs.readdir('logs', (error, files) => {
    if(error) {
        console.log(error)
    } else {
        console.log(files);
    }
})

fs.rename 重命名,还可以更改文件的存放路径

js 复制代码
const fs = require('fs')
fs.rename('js/hello.log', 'js/greeting.log', error => {
    if(error) {
        console.log(error)
    } else {
        console.log('重命名成功')
    }
})

mkdirp

推荐使用第三方包

bash 复制代码
npm i mkdirp -D
js 复制代码
const mkdirp = require('mkdirp')
mkdirp('tmp/foo/bar/baz').then(made => console.log(`创建目录于: ${made}`))

列子

js 复制代码
// fs.createWriteStream  写入文件流  
var fs = require("fs");
var data  = "我是从数据库获取的数据,我要保存起来";
var writerStream = fs.createWriteStream('output.txt');
writerStream.write( data , 'UTF8' );
writerStream.end();  //标记文件末尾  结束写入流,释放资源  
writerStream.on( 'finish',  function() {
    console.log("写入完成。");
});
writerStream.on( 'error',  function(error){
    console.log(error.stack);
});
console.log("程序执行完毕");
 
 
// pipe 管道流  
var fs = require("fs");
var readerStream = fs.createReadStream( 'input.txt');
var writerStream = fs.createWriteStream( 'output.txt');
readerStream.pipe( writerStream );
console.log("程序执行完毕");
 
 
// fs.access 判断目录、文件是否存在(读写权限)
var  fs = require('fs');
fs.access('package.json',(err)=>{
    console.log(err ?  '目录/文件不存在': '文件存在,可以进行读写');
});

链接

【node.js中文网-fs】