Rumah >hujung hadapan web >tutorial js >Perkenalkan anda dengan pantas kepada operasi dan strim fail Nodejs (strim)

Perkenalkan anda dengan pantas kepada operasi dan strim fail Nodejs (strim)

青灯夜游
青灯夜游ke hadapan
2021-08-18 10:22:482451semak imbas

Artikel ini akan memperkenalkan kepada anda operasi fail dalam Nodejs (buat dan padam direktori/fail, menamakan semula, menambah kandungan, membaca kandungan) dan bercakap secara ringkas tentang strim. Operasi Operasi Fail NodeJS, secara logiknya, selagi kami menggunakan

ini dengan munasabah dan menambah beberapa pemprosesan data, kami boleh menyelesaikan banyak operasi tempatan. [Pembelajaran yang disyorkan: "

tutorial nodejsPerkenalkan anda dengan pantas kepada operasi dan strim fail Nodejs (strim)"]

Dalam artikel sebelumnya kita tahu bahawa jika kita ingin merujuk modul, kita perlu menggunakan

, dan hari ini kami akan memperkenalkannya Protagonis ialah modul
    , iaitu modul fail terbina dalam
  • Modul ini mempunyai banyak NodeJS untuk kami gunakan. api
  • Buat direktori dan fail
  • requireKami boleh menggunakan fs NodeJS untuk membuat direktori dan fail masing-masing. API
boleh menerima tiga parameter, yang pertama ialah laluan, yang kedua adalah pilihan pilihan yang mewakili kebenaran, secara amnya kami tidak memerlukan ini, parameter ketiga ialah fungsi panggil balik, kami boleh Melakukan beberapa pemprosesan.

  • boleh menerima empat parameter, yang pertama ialah laluan, yang kedua ialah kandungan fail, pilihan ketiga mewakili kebenaran, dan yang keempat ialah fungsi panggil balik. fs.mkdirfs.writeFile
  • mkdir()
/* learnNode.js */
let fs = require('fs');
fs.mkdir('js',(err)=>{
  if(err){
    console.log('出错')
  }else{
    console.log('未出错')
  }
})
Anda boleh melihat bahawa kami berjaya mencipta direktori dan menulis fail.
  • writeFile()
  • Kesan fail
/* learnNode.js */
let fs = require('fs');
fs.writeFile('./js/newJs.js','console.log("写入这个")',(err)=>{
  if(err){
    console.log('出错')
  }else{
    console.log('没出错')
  }
})

Perkenalkan anda dengan pantas kepada operasi dan strim fail Nodejs (strim)Kami boleh menggunakan

untuk mengesan sama ada fail dalam laluan ialah direktori atau fail, dan kemudian kami boleh melakukan beberapa operasi.

star() terutamanya menerima dua parameter Yang pertama ialah fail yang akan dikesan, dan yang kedua ialah fungsi panggil balik ini mempunyai dua parameter, iaitu Ralat dan objek, objek ini memberikan maklumat tentang fail, kita boleh menilai maklumat objek ini.

  • fs.stat
/* learnNode.js */
let fs = require('fs');
fs.stat('./js/newJs.js', (error, stats) => {
  if(error) {
    console.log(error);
    return false;
  } else {
    console.log(`是否文件:${stats.isFile()}`); 
    console.log(`是否目录:${stats.isDirectory()}`); 
    return false;
  }
})
Padam fail dan padam direktori
  • errstatsMemandangkan kita boleh mencipta fail menggunakan
  • maka sudah tentu kami Anda juga boleh memadam fail, terutamanya menggunakan dua

. Perkenalkan anda dengan pantas kepada operasi dan strim fail Nodejs (strim)

Kedua-dua

masing-masing menerima dua parameter, iaitu fungsi laluan dan panggil balik Dengan melaksanakan
    , anda dapat melihat bahawa fail kami telah berjaya dipadamkan.
  • NodeJSfs.unlink``fs.rmdirAPI
/* learnNode.js */
let fs = require('fs');
fs.unlink('./js/newJs.js', (err) => {
  if (err) throw err;
  console.log('文件已删除');
});
fs.rmdir('./js',(err)=>{
  if (err) throw err;
  console.log('目录已删除');
})
Namakan semula
  • APInode learnNode.jsKami boleh menggunakan
  • untuk menamakan semula fail.

Perkenalkan anda dengan pantas kepada operasi dan strim fail Nodejs (strim)

boleh menerima tiga parameter Yang pertama ialah laluan, yang kedua ialah nama perubahan, dan yang ketiga ialah fungsi panggil balik bahawa jika Apabila lokasi fail yang sepadan dengan satu parameter dan parameter kedua adalah berbeza, ia tidak akan menamakan semula fail sebelumnya tetapi terus memotong fail ke lokasi lain.

  • fs.renameTambahkan kandungan
/* learnNode.js */
let fs = require('fs');
fs.rename('oldJs.js','newJs.js',(err)=>{
  if(err){
    console.log('出错')
  }else{
    console.log('未出错')
  }
})
    Kami menyebut di atas bahawa kami boleh menulis sesuatu semasa membuat fail, jadi bolehkah kami menambah kandungan secara langsung pada fail? Bagaimana dengan menambahkan teks? Kita boleh menggunakan
  • . rename()
/* learnNode.js */
let fs = require('fs');
fs.rename('newJs.js','./js/oldJs.js',(err)=>{
  if(err){
    console.log('出错')
  }else{
    console.log('剪切到js文件夹内了')
  }
})

boleh menerima tiga parameter, yang pertama ialah laluan, yang kedua ialah kandungan, dan yang ketiga ialah fungsi panggil balik, cuma jalankan .

  • fs.appendFile
/* learnNode.js */
let fs = require('fs');
fs.appendFile('newJs.txt','我是追加的内容',(err)=>{
  if(err){
    console.log('出错')
  }else{
    console.log('追加内容')
  }
})
Baca fail dan baca direktori
  • appendFile()node learnNode.jsDi atas adalah operasi untuk menambah, memadam dan mengubah suai fail. , kita kini juga perlu menguasai kandungan bacaan Kita boleh menggunakan
  • dan
untuk membaca fail dan membaca direktori masing-masing.

Perkenalkan anda dengan pantas kepada operasi dan strim fail Nodejs (strim)

  • fs.readFile
    • 可以看到我们两个API都是接收两个参数,第一个是路径,第二个是回调函数,这个回调函数也有两个参数里面包含了data信息,我们可以打印这个data信息来获取内容。

    stream(流)

    • 最后我们来简单聊聊stream,翻译过来就是的意思,提到流你会想到什么,河流,水流,都是从一个源头到另一个源头,就像水龙头从开关到流到地面,stream也是这样一个过程。
    • Stream 有四种流类型:
      • Readable - 可读操作。
      • Writable - 可写操作。
      • Duplex - 可读可写操作.
      • Transform - 操作被写入数据,然后读出结果。
    • 在stream的过程中,我们也有事件可以使用,比如检测到错误触发的error,有数据时触发的data
      • data - 当有数据可读时触发。
      • end - 没有更多的数据可读时触发。
      • error - 在接收和写入过程中发生错误时触发。
      • finish - 所有数据已被写入到底层系统时触发。
    • 接下来简单举个例子理解一下吧。

    读取流

    var fs = require("fs");
    var data = '';
    // 创建可读流
    var readerStream = fs.createReadStream('newJs.txt');
    // 设置编码为 utf8。
    readerStream.setEncoding('UTF8');
    // 处理流事件 遇到有数据时执行这个
    readerStream.on('data', function(chunk) {
      data += chunk;
      console.log(chunk,'流遇到数据了')
    });
    // 处理流事件 流结束时执行这个
    readerStream.on('end',function(){
      console.log(data,'流结束了');
    });
     // 处理流事件 流报错时执行这个
    readerStream.on('error', function(err){
      console.log(err.stack);
    });
    console.log("程序执行完毕");
    • 我们一开始可以创建一个可读流fs.createReadStream(),参数是你要读的文件路径。
    • 当遇到了数据时会执行readerStream.on('data',callback()),如下图所示。
    • 当流结束时会执行readerStream.on('end',callback()),如下图所示。

    Perkenalkan anda dengan pantas kepada operasi dan strim fail Nodejs (strim)

    写入流

    • 我们上面演示了如何通过流读取一个文件,接下来我们试试通过流写入文件。
    var fs = require("fs");
    var data = '我是小卢,我再写入流';
    // 创建一个可以写入的流,写入到文件 newJs.txt 中
    var writerStream = fs.createWriteStream('newJs.txt');
    // 使用 utf8 编码写入数据
    writerStream.write(data,'UTF8');
    // 标记文件末尾
    writerStream.end();
    // 处理流事件 完成和报错时执行
    writerStream.on('finish', function() {
        console.log("写入完毕");
    });
    writerStream.on('error', function(err){
       console.log(err.stack);
    });
    console.log("程序执行完毕");
    • 我们首先创建一个流,然后将data数据写入newJs.txt文件中。
    • 当流写入完毕时会执行readerStream.on('finish',callback()),如下图所示。

    Perkenalkan anda dengan pantas kepada operasi dan strim fail Nodejs (strim)

    • 可以看到该newJs.txt文件中已经存在了我们写入的数据。

    Perkenalkan anda dengan pantas kepada operasi dan strim fail Nodejs (strim)

    写在最后

    总的来说NodeJS提供了fs文件操作模块,这个模块有很多的API,上面只是简单的展示了一下,还有很多有趣的API大家只需要用到的时候去官网查就好了,因为NodeJS能操作文件,小至文件查找,大至代码编译。换个角度讲,几乎也只需要一些数据处理逻辑,再加上一些文件操作,就能够编写出大多数前端工具。

    原文地址:https://juejin.cn/post/6997204352683212831

    作者:快跑啊小卢_

    更多编程相关知识,请访问:编程视频!!

Atas ialah kandungan terperinci Perkenalkan anda dengan pantas kepada operasi dan strim fail Nodejs (strim). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:掘金--快跑啊小卢_. Jika ada pelanggaran, sila hubungi admin@php.cn Padam