• node.js 基础和文件操作 笔记


    • 模块化:

      在node中,一个js就是一个模块。

      通过require()引用外部模块。如果是相对路径,需要用./或者..来开头。

      一个文件就是一个模块,有一个假想的函数包着,所以想要在外部调用,需要用export.x

    • 可以引用的模块包括

      • 核心模块,直接写名字就行了。

      ​ 就比如fs模块

      • 文件模块
    • js中的window在这里是global

    • 建议用module.exports.xxx的方式,声明可以外部调用。

    • npm的一些操作

      • npm -v 查看npm的版本
      • npm version 查看所有模块的版本
      • npm search 包名 搜索名
      • npm install 包名 安装包(可以用i代替install)
      • npm install 包名 --save 安装包并添加到依赖中
      • npm remove 包名 删除包 (可以用r替代remove)
      • npm install 下载当前项目所依赖的包
      • npm install 包名 -g 全局安装包(一般都是工具)
    • Node 基础

      • 缓冲区buffer的概念

        var buf = Buffer.from(str);
        var buf2 = Buffer.alloc(10);
        
        • buffer的大小确定后,不会修改。

        • 实际使用16进制存储的,但是输出到控制台等会现实成10进制。

        • Buffer.from(str) 将一个字符串转化为buffer

        • Buffer.toString() 将缓存区的数据转化为字符串

      • 文件系统

        • 通过node来操作系统中的文件。

        • var fs = require("fs");
          
        • 一般都是两组,一个带sync同步,不带是异步的。

        • 同步文件的写入

        • var fd = fs.openSync("xxx.txt", "w");
          fs.writeSync(fd, "今天天气不错");
          fs.closeSync(fd);
          
        • 异步文件写入

          • 性能相对较好
          • 结果通过回调函数返回
          • 回调函数两个参数:
            • err 错误对象
            • fd文件的描述符
          • 异步在后面执行,回调函数中的代码后执行
        • //多一个回调函数 ,异步方法没有返回值
          fs.open("xxx2.txt", "w",function(err, fd){
              if(!err){
          			fs.write(fd, "今天天气不错" ,function(err){
                  if(!err){
                    .写入成功.
                  }
                });
          			fs.closeSync(fd,function(err){
                  if(!err){
                     .文件成功关闭.
                  }
                });
              }else {
                console.log(err);
              }
          });
          
        • 简单文件写入

          • var fs = require("fs");
            fs.writeFile("hello3.txt", "这是通过writeFile写入的内容",{flag:"w"},function(err){
              if(!err){
                console.log("写入成功...");
              }
            });
            
        • 流式文件写入

          • 适合大文件的写入

          • on(事件字符串,回调函数)

          • once(事件字符串,回调函数)绑定一个一次性的

          • var ws = fs.createWriteStream("Hello3.txt");
            ws.once("open", function(){
              console.log("233");
            })
            ws.once("close", function(){
              console.log("233");
            })
            ws.write("通过可写流写入文件的内容");
            ws.write("通过可写流写入文件的内容");
            ws.write("通过可写流写入文件的内容");
            
            ws.end();
            //不要用ws.close(),拔掉水管的那一头
            
        • 同步文件读取

        • 异步文件读取

        • 简单文件读取

          var fs = require("fs");
          fs.readFile("hello3.txt", function(err, data){
            if(!err) {
              console.log(data);
          		//也可以整合上面的writeFile
            }
          })
          
        • 流式文件读取

          • 可以分多次把一个大文件读取到内存中。

          • var fs = require("fs");
            var rs = fs.createReadStream("an.jpg");
            //监听流的开启和关闭
            rs.once("open", function(){
              console.log("可读流打开了~~~");
            });
            rs.once("close", function(){
              console.log("可读流关闭了~~~");
            });
            
            //为data绑定事件,就可以自动运行
            rs.on("data", function(){
              //实现复制的效果。
              ws.write(date);
            });
            
            //传输数据,还可以用pipe简化
            rs.pipe(ws);
            
        • 文件操作的其他一些方法

          • fs.stat("a.mp3", function(err, stat){
            	//查看是不是文件、目录
              console.log(stat.isFile());
              console.log(stat.isDirectory());
              
            });
            //删除文件
            fs.unlinkSync("hello.txt");
            //读取当前文件目录结构
            fs.readdir(".", function(err, files){
              if(!err){
                console.log(files);
              }
            });
            
            //截断文件,将文件前3个留下来。
            fs.truncateSync("hello2.txt", 3);
            //创建文件夹
            fs.mkdirSync("hello");
            //删除文件夹
            fs.rmdirSync("hello");
            //重命名,前两个是目录字符串
            fs.rename("a.mp3", "笔记.mp3",function(err) {
              if(!err){
                console.log("修改成功~~~");
              }
            });
            
            //监视文件的修改,回调函数,当文件发生变化的,被执行。
            //运行起来,就会一直运行,不会停。
            //拥有定时机制
            fs.watchFile("hello2.txt",{interval:1000},function(curr, prev){
              //上面两个参数,都是stat类型的。
              console.log("文件发生了变化");
            });
            
            
  • 相关阅读:
    ISSCC 2017论文导读 Session 14:ENVISION: A 0.26-to-10 TOPS/W Subword-Parallel DVAFS CNN Processor in 28nm
    ISSCC 2017论文导读 Session 14: A 28nm SoC with a 1.2GHz Prediction Sparse Deep-Neural-Network Engine
    ISSCC 2017论文导读 Session 14 Deep Learning Processors,DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN
    ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network
    深度学习方法(九):自然语言处理中的Attention Model注意力模型
    深度学习方法(八):自然语言处理中的Encoder-Decoder模型,基本Sequence to Sequence模型
    720P、1080P、4K是什么意思?
    《微微一笑很倾城》中肖奈大神说的平方根倒数速算法是什么鬼?三十分钟理解!
    转载为什么写技术博客对新人如此重要
    三十分钟理解博弈论“纳什均衡” -- Nash Equilibrium
  • 原文地址:https://www.cnblogs.com/ckxkexing/p/12637198.html
Copyright © 2020-2023  润新知