NodeJS文件系统(fs)与流(stream)
时间:2022-07-28
本文章向大家介绍NodeJS文件系统(fs)与流(stream),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
文件系统(File System):
- 在Node中,文件系统的交互是非常重要的,服务器的本质就是将本地的文件发送给客户端,
- Node通过fs模块来和文件系统进行交互,该模块提供了一些标准的文件访问API类打开、读取、写入文件、以及与其交互。
- 要是用fs模块,首先要从核心模块中加载; 使用 const fs= require('fs') ; 来引入
#fs使用特点:
- fs模块中的所有操作都有两种形式可供选择同步和异步,
- 同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码。
- 异步文件系统不会阻塞程序的执行,而是在操作完成时,通过回调函数将结果返回。
//1. 引入模块
const fs= require("fs");
// console.log(fs)
//2. 打开文件
// fs.open 异步读取(通常用异步 需设置回调函数)
// fs.openSync 同步读取(读取时会阻塞线程)
let hello = fs.openSync("hello.txt", "w");
// 不存在会自动新建
//3. 写入内容
fs.writeFileSync(hello,'hello word!');
//4. 保存并退出
fs.closeSync(hello);
#文件操作:
- 打开文件:
fs.open(path,flags[,mode],callback)
异步打开 异步都是回调 回调嵌套回调fs.openSync(path,flags[,mode])
同步打开
文件标记(flags): http://nodejs.cn/api/fs.html#fs_fs_open_path_flags_mode_callback
一、同步打开文件
//1. 引入模块
let fs = require('fs');
//2.打开文件 同步
var fd=fs.openSync('1.txt', 'w');
//3.写入内容
fs.writeFileSync(fd,"hello world!");
//4. 保存并关闭
fs.closeSync(fd);
二、异步打开文件
//1.引入模块
let fs = require('fs');
//2. 打开文件
fs.open('1.txt', 'a', (err, fd)=>{
//2.1判断是否出错
if(!err){
//正确 2.2写入文件
fs.writeFile(fd, "今天天.....气真好!", (err)=>{
//2.2.1 写入成功
if(!err){
console.log('写入成功');
}else{
throw err;
}
//2.3 关闭文件
fs.close(fd, (err)=>{
if(!err){
console.log('文件以保存并关闭')
}else{
throw err;
}
})
})
}else{
throw err;
}
})
#使用文件流写入
文件流写入: http://nodejs.cn/api/fs.html#fs_fs_createwritestream_path_options
//同步操作
//1. 引入模块
let fs= require('fs');
//2.建立通道
let ws = fs.createWriteStream('fsw.txt')
//3.打开通道
ws.once('open', ()=>{
console.log('通道已经打开');
})
ws.once('close', ()=>{
console.log('通道已经关闭');
})
//4. 写入内容
ws.write('我爱你,');
ws.write('我爱你,');
ws.write('我爱你,');
#读写文件:
文档地址:http://nodejs.cn/api/fs.html#fs_fs_readfile_path_options_callback 读取文档:
//1. 引入模块
let fs = require('fs');
//2. 读取文件
fs.readFile('source/hello.txt','utf8',(err,data)=>{
//判断是否成功
if(!err){
console.log(data);//
// console.log(data.toString());
//data 默认读取的是二进制 使用toString() 方法转换成
}else{
throw err;
}
})
读取图片:
//3. 读取图片
fs.readFile("source/psb.jpg",(err,data)=>{
//判断是否成功
if(!err){
//写入图片
fs.writeFile('img.jpg', data, (err)=>{
if(!err){
console.log('写入成功!')
}else{
throw err;
}
})
}else{
throw err;
}
});
读取视频:
//1. 引入模块
let fs= require('fs');
//2. 读取视频
fs.readFile('source/cddbb.mp4', (err, data)=>{
if(!err){
// 写入视频
fs.writeFile('nmx.mp4', data, (err)=>{
if(!err){
console.log('写入成功!');
}else{
throw err;
}
})
}else{
throw err;
}
})
//3. 流式文件的读入(批量文件处理)
let re= fs.createReadStream('source/cddbb.mp4');
//建立读取流
let ws= fs.createWriteStream('新建的视频.mp4');
//建立写入流
//4. 创建管道
re.pipe(ws);//文件流传输
console.log('文件流传输完成')
参考:详解NodeJS文件系统fs 我的GitHub总结的NodeJS笔记
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 腾讯云V3签名方法之iOS
- Go语言学习之 panic 和 recover
- Go语言学习之函数
- 【Spark Operator】webhook的分析
- 图解人脸识别算法facenet系列(一)
- Go 语言学习之 struct
- Go 语言学习之map
- 前端|利用手机号登录获取手机验证码
- Linux netstat命令结果分析
- setlistmap部分源码解析
- 使用 Log4j2 + SLF4j 打造日志系统的全方位教程
- 树莓派4的操作系统安装烧录、设置SSH、WIFI、VNC及备份
- C# dotnet 使用 startIndex 提升 IndexOf 的性能
- vscode .vue文件格式配置 使其与webstorm设置一致
- Go 语言学习之 slice