zoukankan      html  css  js  c++  java
  • Node js 读写文件

    官方文档: http://nodejs.cn/api/

    nodejs Buffer

    Buffer 这个核心模块在使用时不需要引入,只有这个模块在使用时不需要引入

    Buffer 与 普通字符串互转

    • from 将字符串转换为 16进制 的形式
    let str    = "www.qq.com";
    let buffer = Buffer.from(str);
    
    console.log(buffer);
    
    • toString 将16进制字符串 转换为 10 普通字符串
    let str    = "www.qq.com";
    let buffer = Buffer.from(str);
    
    console.log(buffer);
    

    注: 在英文状态下,普通字符串 和 16进制的buffer 一致, 在中文状态下,两者长度不一致

    let str = "测试";
    let buffer = Buffer.from(str);
    console.log("普通字符串:" + str.length);
    console.log("buffer字符串:" + buffer.length);
    
    let str2 = "test";
    let buffer = Buffer.from(str);
    console.log("普通字符串:" + str2.length);
    console.log("buffer字符串:" + buffer.length);
    

    alloc 新建 buffer

    • 使用 alloc 新建 buffer 是必须指定 buffer的长度, 不能动态的改变
    • buffer中只能存储 数值类型的值,可以是 2进制 10进制 16进制
    • 在向 buffer 中存储数据时, 溢出不会做任何处理
    let bf = Buffer.alloc(10);
    bf[0] = 1;
    bf[1] = 10;
    bf[10] = 15;
    console.log(bf);
    
    • 遍历 buffer
    let buffer = Buffer.alloc(10);
    buffer[0] = 10;
    buffer[1] = 20;
    buffer[2] = 30;
    
    buffer.forEach( (item, index) => {
        console.log(index,'=>', item);
    });
    

    nodejs fileSystem

    同步写入文件

    const fs = require("fs");
    
    // 1.打开文件, 没有就创建, 以什么样的形式来打开文件 w:写 r:读
    let fd = fs.openSync('1.txt', 'w');
    
    // 2.写入文件,如果要写入文件必须要用 w 方式打开
    fs.writeFileSync(fd, "努力学习...");
    
    // 3.关闭文件资源
    fs.closeSync(fd);
    

    异步写入文件

    const fs = require("fs");
    
    // 1.打开文件, 没有就创建, 以什么样的形式来打开文件 w:写 r:读
    fs.open("1.txt", "a+", (err, fd) => {
        if (err) { throw err; }
        // 2.写入文件
        fs.writeFile(fd, "hello world", error => {
                if(error) { throw err; }
                // 3.关闭文件
                fs.close(fd, err=> {
                    if (err) { throw err; }
                    console.log("执行成功!");
                });
            });
    });
    

    流式写入文件

    
    const fs = require("fs");
    
    // 1. 打开写入流stream
    var ws = fs.createWriteStream('./1.txt');
    
    // 2. 监听流打开/关闭事件
    ws.once("open", () =>{
        console.log("stream 已经打开");
    });
    
    ws.once("close", () => {
        console.log("stream 已经关闭");
    });
    
    // 3. 写入文件
    ws.write("where are you now?
    ");
    ws.write("where are you now?
    ");
    ws.write("where are you now?
    ");
    
    // 4. 关闭流, 关闭时 触发 close 事件
    ws.end();
    

    流读写文件(适合大文件)

    // 1.引入模块
    const fs = require("fs");
    
    // 2.创建读/写流
    let rs = fs.createReadStream("./source/never.mp4");
    let ws = fs.createWriteStream("./renounce.mp4");
    
    // 3.监听打开和关闭流的事件
    rs.once('open', () => {
        console.log("读出流打开成功");
    });
    ws.once('open', () => {
        console.log("写入流打开成功");
    });
    
    rs.once('close', () => {
        console.log("读出流关闭成功");
    });
    ws.once('close', () => {
        console.log("写入流关闭成功");
    });
    
    // 4. 绑定data
    rs.on('data', data => {
        // 5.写入数据
        ws.write(data);
    });
    
    
    /// 以上4步可以简写为==========================================
    // 1.引入模块
    const fs = require("fs");
    
    // 2.创建读/写流
    let rs = fs.createReadStream("./source/never.flv");
    let ws = fs.createWriteStream("./renounce.mp4");
    
    // 3.创建管道
    rs.pipe(ws);
    
    
  • 相关阅读:
    Asp.Net基础 9.Web开发原则
    JavaScript – 1.事件 + 2.变量 + 3.判断变量初始化 + 4.函数的声明 + 5.匿名函数
    DOM – 3.window对象的属性
    Dom – 1.window对象事件 + 2.body、document对象的事件
    faint
    开会
    it's over
    so funny
    no topic
    震惊:有良医生揭无良献血内幕!
  • 原文地址:https://www.cnblogs.com/liaohui5/p/10581632.html
Copyright © 2011-2022 走看看