分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

nodeJs文件系统(fs)与流(stream)

发布时间:2023-09-06 02:27责任编辑:傅花花关键词:暂无标签

文件系统(File System):

  1. 在Node中,文件系统的交互是非常重要的,服务器的本质就是将本地的文件发送给客户端,
  2. Node通过fs模块来和文件系统进行交互,该模块提供了一些标准的文件访问API类打开、读取、写入文件、以及与其交互。
  3. 要是用fs模块,首先要从核心模块中加载; 使用 const fs= require(‘fs‘) ; 来引入

fs使用特点:

  1. fs模块中的所有操作都有两种形式可供选择同步和异步,
  2. 同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码。
  3. 异步文件系统不会阻塞程序的执行,而是在操作完成时,通过回调函数将结果返回。
//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);

[](https://github.com/AnsonZnl/S...

文件操作:

  1. 打开文件:

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; ??????} ??})

[](https://github.com/AnsonZnl/S...

使用文件流写入

文件流写入: 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(‘我爱你,‘);

[](https://github.com/AnsonZnl/S...

读写文件:

文档地址: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; ???}});

[](https://github.com/AnsonZnl/S...

读取视频:

//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笔记

来源:https://segmentfault.com/a/1190000016952017

nodeJs文件系统(fs)与流(stream)

原文地址:https://www.cnblogs.com/qixidi/p/10164138.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved