Node.js -- fs模块

这篇具有很好参考价值的文章主要介绍了Node.js -- fs模块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

fs – file system
fs模块可以实现与硬盘的交互
例如文件的创建、删除、重命名、移动,
还有文件内容的写入、读取,以及文件夹的相关操作

1. 写入文件

1.1 写入文件

  1. 导入fs 模块
const fs = require('fs');
  1. 写入文件
fs.writeFile('./座右铭.txt','三人行,则必有我师焉',err =>
// err写入失败:错误对象 写入成功:nul1
if(err){
console.1og('写入失败')return;
console.1og('写入成功')}
);
console.log(1+1);

// 2
// 写入成功
Node.js -- fs模块,node,node.js,学习,前端
其实,我们平常文件的保存也是使用了node 的fs 模块!

1.2 同步和异步

  1. 异步执行
    上面我们在学习写入模块时举出的案例就时是异步编程,程序会先输出2 的原因是js 文件从上之下执行,写入文件时时异步执行,就像但与我们之前学过的setTimeOut 定时器。

  2. 同步执行

fs.writeFileSync('./data.txt','test');
// 这种方法没有回调函数

此时程序没有其他线程,只能等这步代码执行完之后再进行下面的程序。

1.3 文件追加写入

// 第一种方法
fs.appendFile('./座右铭.txt','择其善者而从之,择期不善者而改之',err=>{
//判断
if(err){
console.log('写入失败');
return;
}
console.log('追加写入成功');
});
// 第二种方法
fs.appendFileSync('./座右铭.txt','择其善者而从之,择期不善者而改之')
// 第三种方法
fs.appendFile('./座右铭.txt','love love love'{flag: 'a'},err=>{
//判断
if(err){
console.log('写入失败');
return;
}
console.log('\r\n追加写入成功'); // \r\n 表示换行
});
// 这种方法我们一般在日志使用

1.4 流式写入

// 1.导人fs
const fs = require('fs');
// 2.创建写入流对象
const ws = fs.createWriteStream('./观书有感.txt');
// 3.write
ws.write('半亩方塘一鉴开r\n');
ws.write('天光云影共徘徊\r\n');
ws.write('间渠那得清如许r\n');
ws.write('为有源头活水来\r\n');
// 4.关闭通道
ws.close();

之前讲过的写入文件方式都是调用一次方法写入一次,会消耗资源,而这种方法的优势就是在没有关闭通道的时候,可以一直向文件中写入内容。

1.5 文件写入的场景

文件写入在计算机中是一个非常常见的操作,下面的场景都用到了文件写入

  • 下载文件
  • 安装软件
  • 保存程序日志,如Git
  • 编辑器保存文件
  • 视频录制

当需要持久化保存数据的时候,应该想到文件写入

2. 读取文件

2.1 异步和同步读取

语法:fs.readFile(path[,options],callback)
参数说明:

  • path文件路径
  • options选项配置
  • callback回调函数
    返回值:undefined
// 1.引入fs模块
const fs = require('fs');

// 2.异步读取
fs.readFile('./观书有感.txt',(err,
data) => {
if(err){
console.log('读取失败~');
return;
}
console.log(data.toString());
)
})

// 3.同步读取
let data = fs.readFileSync('./观书有感.txt');
console.log(data.toString());

2.2 读取文件应用场景

  • 电脑开机
  • 程序运行
  • 编辑器打开文件
  • 查看图片
  • 播放视频
  • 播放音乐
  • Git 查看日志
  • 上传文件
  • 查看聊天记录

2.3 流式读取

流式读取就是相当于把文件分成了若干块儿,一次读取若干块儿内容。

// 1.引入fs模块
const fs = require('fs');
// 2.创建读取流对象
const rs = fs.createReadStream('../资料/笑看风云.mp4');
// 3.绑定data事件
// chunk --> 块儿 大块儿
rs.on('data',chunk => {
console.log(chunk)
console.log(chunk.length);// 65536字节 = 64KB
// console.log(chunk.toString()); // 视频信号不是以字符串的形式存储的,这样强制使用UTF-8 形式输出的内容会乱码
});
//
console.log(chunk.toString());// 65536 = 64KB
):
// 4.end可选事件
rs.on('end',()=>{
console.1og('读取完成');
}

2.4 fs 练习 – 文件复制

// 方式一 readFile
const fs = require('fs');
// 读取文件内容
// let data = fs.readFileSync('../资料/笑看风云.mp4');
// 写入文件
// fs.writeFileSync('../资料/笑看风云-2.mp4',data);
console.log(process.memoryUsage());// rss => 整个文件大小 => 110718784字节 => 105MB
// process.memoryUsage() 获取文件内存

// 方式二 流式操作
// 创建读取流对象
const rs = fs.createReadStream('./资料/笑看风云.mp4');
// 创建写入流对象
const ws = fs.createWriteStream('../资料/笑看风云-3.mp4');
// 绑定data事件
rs.on('data',chunk => {ws.write(chunk);
});
rs.on('end',()=>
console.log(process.memoryUsage());//43106304 => 41MB
})
rs.pipe(ws) // 了解即可 也是一种文件写入流

3. 文件重命名和移动

// 文件重命名
// 1.导入fs模块
const fs = require('fs');
// 2.调用rename方法
fs.rename('./座右铭.txt','./论语.txt',err=>{if(err){
console.log('操作失败~');
return;
}
console.log('操作成功');
});

// 文件移动
fs.rename('./data.txt','../资料/data.txt',err => {
if(err){
console.log('操作失败~');
return;
}
console.log('操作成功');
});

Node.js -- fs模块,node,node.js,学习,前端

4. 文件删除

// 1.导入fs模块
const fs require('fs');
// 2.调用un1ink方法 对应同步操作=>unlinkSync
fs.unlink('./观书有感.txt',err=>{
if(err){
console.1og('删除失败~');
return;
}
console.log('删除成功');
});

// 1.导入fs模块
const fs require('fs');
// 2.调用rm方法 对应同步操作=>rmSync
fs.rm('./观书有感.txt',err=>{
if(err)
console.1og('删除失败~')return;
console.log('删除成功)})

5. 文件夹操作

5.1 创建文件夹

// 1.导入fs模块
const fs require('fs');

//第一种方法
// 2.创建文件夹mk make制作dir directory文件夹
fs.mkdir('./html',err =>
if(err){
console.1og('创建失败~');
return;
}
console.1og('创建成功');
})

// 第二种方法 递归创建
fs.mkdir('./a/b/c',{recursive: true},err =
if(err){
console.1og('创建失败~')return;
}
console.1og('创建成功')})

5.2 读取文件夹

//2-3读取文件夹
// read 读取 dir directory 文件夹
fs.readdir('./资料'(err,data)=>{
if(err){
console.1og('读取失败');
return;
}
console.log(data);
})

fs.readdir('./',(err,data) => {
if(err){
console.1og('读取失败');
return
}
console.log(data);
})

5.3 删除文件夹

// rm => remove 
fs.rmdir('./html',err =
if(err){
console.1og('删除失败');
return;
console.log('删除成功');
});

// 递归删除
// 文件夹不为空时无法删除
// 不建议使用
fs.rmdir('./a',{recursive:true},err =
if(err){
console.log(err);
return;
console.1og('删除成功');
});

//建议使用
fs.rm('./a',{recursive:true},err =
if(err){
console.log(err);
return;
console.1og('删除成功);
})

6. 查看资源状态

// 1.导入fs模块
const fs require('fs');
// 2.stat方法status缩写状态
fs.stat('./资料/笑看风云.mp4',(err,data)
=>{
if(err){
console.1og('操作失败')return;
}
console.log(data);
// data.file() => 查看是否为文件
// data.isDirectory() => 查看是否为文件夹
})

7. 资源路径

Node.js -- fs模块,node,node.js,学习,前端

7.1 路径使用

// 1.导入fs模块
const fs require('fs');

// 相对路径
// 当前文件夹
fs.writeFileSync('./index.html','love');
// fs.writeFileSync('index.html','love');
// 上一级文件夹
fs.writeFileSync('../index.html','love');

//绝对路径
fs.writeFilesync('D:/index.html','love');
// fs.writeFileSync('C:/index.html','love'); 报错 权限不允许

7.2 相对路径的bug

现有文件夹目录如下:
Node.js -- fs模块,node,node.js,学习,前端
执行以下代码:

const fs = require('fs');
fs.writeFileSync('./index.html','love');

Node.js -- fs模块,node,node.js,学习,前端
为什么index.html 创建在了代码的同级目录下呢?这是因为相对路径的参照物是命令行的工作目录
Node.js -- fs模块,node,node.js,学习,前端
要解决这个问题就要转换为绝对路径:
我们每次去写绝对变量都需要写好长一段,但是使用__dirname(可以理解为全局变量,保存的是所在文件的所在目录的绝对路径)

console.log(__dirname);
fs.writeFileSync(__dirname + '/index.html','love');

7.3 fs 练习 – 批量重命名

const fs = require('fs');
const files fs.readdirSync('./code');
// 遍历数组
files.forEach(item =>{
// 拆分文件名
let data = item.split('-');
let [num,name] = data;
// 判断
if(Number(num) < 10){
num = '0' + num;
//创建新的文件名
let newName = num +'-' +name;
//重命名
fs.renameSync(`./code/${item}`,`./code/${newName}`);
})

思考:
如果将02 文件删除,那么怎么将文件名称03变02,以此类推将下面所有的文件名称修改,接着排序。

答案在资料中。文章来源地址https://www.toymoban.com/news/detail-857588.html

到了这里,关于Node.js -- fs模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Node.js中fs模块

    fs模块是Node.js中的一个核心模块,全称为File System(文件管理系统)。该模块专门用来操作系统中的文件,常用的操作方式是对文件的读取和写入。 fs模块的API大都提供三种操作方式: 同步操作文件:代码会被阻塞,不会继续执行。 异步回调函数操作文件:代码不会被阻塞,

    2024年01月25日
    浏览(41)
  • Node.js |(二)Node.js API:fs模块 | 尚硅谷2023版Node.js零基础视频教程

    学习视频 :尚硅谷2023版Node.js零基础视频教程,nodejs新手到高手 fs : file system ,文件系统。 fs模块可以实现与硬盘的交互 ,例如文件的创建、删除、重命名、移动、内容的写入读取以及文件夹的相关操作。 语法 : fs.writeFile(file,data[,options],callback) 参数说明 : file 文件名

    2024年02月12日
    浏览(53)
  • 介绍Node.js中fs模块 代码和注释。

    Node.js中的fs模块提供了一些用于文件系统操作的API,包括文件读写、目录操作等。 使用fs.readFile()方法可以读取文件内容。该方法的第一个参数是文件路径,第二个参数是可选的选项对象,第三个参数是回调函数。回调函数的第一个参数是错误对象,第二个参数是读取的文件

    2024年02月07日
    浏览(45)
  • Node.js-fs、path、http模块

    Node.js 作为一个JavaScript 的运行环境,仅仅提供了基础的功能和 AP1。然而,基于 ode.s 提供的这些基础能,很多强大的工具和框架如雨后春笋,层出不穷,所以学会了 Nodejs,可以让前端程序员胜任更多的工作和岗位: 基于Express 框架(http://www.expressjs.com.cn/),可以快速构建 Web 应用

    2024年02月04日
    浏览(41)
  • node.js内置模块fs,path,http使用方法

    NodeJs中分为两部分 一是V8引擎为了解析和执行JS代码。 二是内置API,让JS能调用这些API完成一些后端操作。 内置API模块(fs、path、http等) 第三方API模块(express、mysql等) fs模块 fs.readFile()方法,用于读取指定文件中的内容。 fs.writeFile()方法,用于向执行的文件中写入内容 path路径处

    2024年02月12日
    浏览(42)
  • node自主学习——fs文件操作模块

    目录 读文件 读文件是否成功的判定 写文件 写文件是否成功的判定 备注:VsCode、node v18.17.0

    2024年02月16日
    浏览(39)
  • Node.js - fs模块、path模块、http模块、Node.js模块化(ECMAScript标准的导出和导入)、包、npm包的管理和安装依赖、nodemon

    什么是 Node.js,有什么用,为何能独立执行 JS 代码,演示安装和执行 JS 文件内代码? Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码,因为这个特点,它可以用来 编写服务器后端的应用程序 在** 传统Web开发中,浏览器就是JavaScript的运行时环境 **, 因为它提供了

    2024年02月02日
    浏览(43)
  • Node.js-fs模块文件创建、删除、重命名、文件内容的写入、读取以及文件夹的相关操作

    异步写入:writeFile() 同步写入:writeFileSync() 异步追加写入:appendFile() 同步追加写入:appendFileSync() 方式一(appendFile): 方式二(writeFile): fs.createWriteStream( path [, options ] ) 程序打开一个文件是需要消耗资源的 ,流式写入可以减少打开关闭文件的次数。 流式写入方式适用于

    2024年02月14日
    浏览(59)
  • 前端node.js入门-前端工程化与模块化

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 Node.js 入门  什么是 Node.js? 什么是前端工程化?   Node.js 为何能执行 JS?  fs 模块 - 读写文件  path 模块 - 路径处理 URL 中的端口号  常见的服务程序  Node.js 模块化 什

    2024年02月14日
    浏览(56)
  • node中的内置模块path和fs

    Node中的path模块是用来操作文件路径的内置模块,主要用于字符串路径操作,其有多种用法用来返回不同的路径信息。 path.join path.join()方法主要用于连接路径。该方法的主要作用就是将所有传入的路径片段连接在一起,然后规范化生成的路径。需要注意的是,在Join操作中’

    2024年02月13日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包