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

文件系统(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

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

时间: 2024-10-06 01:14:04

nodeJs文件系统(fs)与流(stream)的相关文章

nodejs 文件系统(fs) 删除文件夹 及 子文件夹下的所有内容

http://blog.163.com/hule_sky/blog/static/2091622452015112821829773/ node 文件系统fs 为我们提供了一些方法 进行文件和文件夹的读写删除等操作 下边将介绍删除文件夹及子文件夹下的所有内容的相关命令(均含有同步和异步方法) 1. fs.stat && fs.statSync 提供了访问文件的属性信息 2. fs.readdir && fs.readdirSync 提供读取文件目录信息 3. fs.unli

Node.js 文件系统fs模块

Node.js 文件系统封装在 fs 模块是中,它提供了文件的读取.写入.更名.删除.遍历目录.链接等POSIX 文件系统操作. 与其他模块不同的是,fs 模块中所有的操作都提供了异步的和 同步的两个版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync().我们以几个函数为代表,介绍 fs 常用的功能,并列出 fs 所有函数 的定义和功能. 一.fs 模块函数表 二.fs 部分API fs.readFile Node.js读取文件函数语法如下

node基础学习——操作文件系统fs

p.p1 { margin: 0.0px 0.0px 10.0px 0.0px; text-align: center; line-height: 11.0px; font: 14.0px "PingFang SC Semibold"; color: #000000 } p.p2 { margin: 0.0px 0.0px 10.0px 0.0px; text-indent: 36.0px; line-height: 11.0px; font: 9.0px "PingFang

Java学习记录(补充八:Date类;Java流(Stream),文件(File)和IO)

Date类,Calendar类package Box1; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Random; //Date类 public class DateTest { public static void main(String[] args) { Date

[Linux] 流 ( Stream )、管道 ( Pipeline ) 、Filter- 笔记

流 ( Stream ) 1. 流,是指可使用的数据元素一个序列. 2. 流,可以想象为是传送带上等待加工处理的物品,也可以想象为工厂流水线上的物品. 3. 流,可以是无限的数据. 4. 有一种功能,处理这一个流同时产生着另一个流.这种功能被成为 过滤 ( Filter ).使用管道 ( pipelie ) 将这些功能进行连接. Unix 管道 ( Pipeline ) 1. 管道连接着处理元素,一个处理元素的输出是下一个处理处理元素的输入. 2. 管道能加快数据处理速度. 2. Unix 下的

流Stream 文件File 流IO

Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序列.输入流表示从一个源读取数据,输出流表示向一个目标写数据. Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中. 但本节讲述最基本的和流与 I/O 相关的功能.我们将通过一个个例子来学习这些功能. 读取控

深入理解 Java中的 流 (Stream)

首先,流是什么? 流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以"流"的方式进行.设备可以是文件,网络,内存等. 流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,反之我们称为输入流. 可以将流想象成一个"水流管道",水流就在这管道中形成了,自然就出现了方向的概念. 当程序需要从某个数据源读入数据的时候,就会开启一个输入流,数据源可以是文件.内存或网络等等.

Java流(Stream)、文件(File)和IO

Java流(Stream).文件(File)和IO Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序列.输入流表示从一个源读取数据,输出流表示向一个目标写数据. Java为I/O提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中. 但本节讲述最基本的和流与I/O相关的功能.我们将通过一个个例子来学习这些功能. 读取控制台输入 Jav

12.文件系统fs

文件系统fs ==> 提供文件的读取, 写入, 更名, 删除, 遍历目录, 链接等POSIX文件系统操作 1.fs.readFile(filename, [encoding], [callback(err, data)]) ==> 最简单的读取文件的函数 第一个参数filename ==> 表示要读取的文件名 第二个参数encoding(可选) ==> 表示文件的字符编码 callback是回调函数, 用于接收文件的内容, 如果不指定encoding,则callback就是第二个参