本篇文章给大家介绍一下nodejs中的文件操作(创建和删除目录/文件、重命名、追加内容、读取内容),以及简单聊聊stream(流)。

NodeJS除了在网络方面大放异彩,它还可以对文件进行操作,按逻辑上来说只要我们合理运用这些api再加上一些数据处理,我们就可以完成本地很多的操作。【推荐学习:《nodejs 教程》】require,而今天要介绍的主角是fs模块,也就是NodeJS内置的一个文件模块,这个模块有很多的API供我们使用。fs.mkdir fs.writeFile来分别创建目录和文件。mkdir()可以接收三个参数,第一个是路径,第二个是个可选项代表权限,这个我们一般不需要,第三个参数是一个回调函数,我们可以在这里面做一些处理。/* learnNode.js */
let fs = require('fs');
fs.mkdir('js',(err)=>{
if(err){
console.log('出错')
}else{
console.log('未出错')
}
})writeFile()可以接收四个参数,第一个是路径,第二个是文件内容,第三个可选项代表权限,第四个是回调函数。/* learnNode.js */
let fs = require('fs');
fs.writeFile('./js/newJs.js','console.log("写入这个")',(err)=>{
if(err){
console.log('出错')
}else{
console.log('没出错')
}
})
fs.stat来检测一个路径的文件是为目录还是文件,进而可以做一些操作。/* learnNode.js */
let fs = require('fs');
fs.stat('./js/newJs.js', (error, stats) => {
if(error) {
console.log(error);
return false;
} else {
console.log(`是否文件:${stats.isFile()}`);
console.log(`是否目录:${stats.isDirectory()}`);
return false;
}
})err错误和stats对象,这个对象提供有关文件的信息,我们可以对这个对象信息来进行判断。
NodeJS创建文件那当然我们也可以删除文件,主要使用的是fs.unlink``fs.rmdir这两个API。/* learnNode.js */
let fs = require('fs');
fs.unlink('./js/newJs.js', (err) => {
if (err) throw err;
console.log('文件已删除');
});
fs.rmdir('./js',(err)=>{
if (err) throw err;
console.log('目录已删除');
})API都分别接收两个参数是路径和回调函数,执行node learnNode.js可以看到我们文件已经成功删除。
fs.rename来对文件重命名。/* learnNode.js */
let fs = require('fs');
fs.rename('oldJs.js','newJs.js',(err)=>{
if(err){
console.log('出错')
}else{
console.log('未出错')
}
})rename()可以接收三个参数第一个是路径第二个是更改的名称,第三个是回调函数,值得注意的是,如果第一个参数和第二个参数对应的文件所在的位置不一样时,他不会重命名之前那个文件而是直接把文件剪切放到另一个地方。/* learnNode.js */
let fs = require('fs');
fs.rename('newJs.js','./js/oldJs.js',(err)=>{
if(err){
console.log('出错')
}else{
console.log('剪切到js文件夹内了')
}
})fs.appendFile。/* learnNode.js */
let fs = require('fs');
fs.appendFile('newJs.txt','我是追加的内容',(err)=>{
if(err){
console.log('出错')
}else{
console.log('追加内容')
}
})appendFile()可以接收三个参数,第一个是路径,第二个是内容,第三个是回调函数,执行node learnNode.js即可。
fs.readFile和fs.readdir分别读取文件和读取目录。/* learnNode.js */
let fs = require('fs');
fs.readFile('newJs.txt', (err, data) => {
if(err) {
console.log('出错');
} else {
console.log("读取文件成功!");
console.log(data);
}
})
/* learnNode.js */
let fs = require('fs');
fs.readdir('./', (err, data) => {
if(err) {
console.log('出错');
} else {
console.log("读取目录成功!");
console.log(data);
}
})
API都是接收两个参数,第一个是路径,第二个是回调函数,这个回调函数也有两个参数里面包含了data信息,我们可以打印这个data信息来获取内容。stream,翻译过来就是流的意思,提到流你会想到什么,河流,水流,都是从一个源头到另一个源头,就像水龙头从开关到流到地面,stream也是这样一个过程。error,有数据时触发的data。var fs = require("fs");
var data = '';
// 创建可读流
var readerStream = fs.createReadStream('newJs.txt');
// 设置编码为 utf8。
readerStream.setEncoding('UTF8');
// 处理流事件 遇到有数据时执行这个
readerStream.on('data', function(chunk) {
data += chunk;
console.log(chunk,'流遇到数据了')
});
// 处理流事件 流结束时执行这个
readerStream.on('end',function(){
console.log(data,'流结束了');
});
// 处理流事件 流报错时执行这个
readerStream.on('error', function(err){
console.log(err.stack);
});
console.log("程序执行完毕");fs.createReadStream(),参数是你要读的文件路径。readerStream.on('data',callback()),如下图所示。readerStream.on('end',callback()),如下图所示。
var fs = require("fs");
var data = '我是小卢,我再写入流';
// 创建一个可以写入的流,写入到文件 newJs.txt 中
var writerStream = fs.createWriteStream('newJs.txt');
// 使用 utf8 编码写入数据
writerStream.write(data,'UTF8');
// 标记文件末尾
writerStream.end();
// 处理流事件 完成和报错时执行
writerStream.on('finish', function() {
console.log("写入完毕");
});
writerStream.on('error', function(err){
console.log(err.stack);
});
console.log("程序执行完毕");data数据写入newJs.txt文件中。readerStream.on('finish',callback()),如下图所示。
newJs.txt文件中已经存在了我们写入的数据。
总的来说NodeJS提供了fs文件操作模块,这个模块有很多的API,上面只是简单的展示了一下,还有很多有趣的API大家只需要用到的时候去官网查就好了,因为NodeJS能操作文件,小至文件查找,大至代码编译。换个角度讲,几乎也只需要一些数据处理逻辑,再加上一些文件操作,就能够编写出大多数前端工具。
原文地址:https://juejin.cn/post/6997204352683212831作者:快跑啊小卢_
更多编程相关知识,请访问:编程视频!!
以上就是快速带你入门Nodejs的文件操作和stream(流)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号