Jadual Kandungan
Strim Fail
Strim boleh dibaca (Boleh dibaca)
createReadStream
Tulis data, data boleh menjadi rentetan atau Penampan dan mengembalikan nilai Boolean.
Rumah hujung hadapan web tutorial js Analisis mendalam aliran fail dalam node.js

Analisis mendalam aliran fail dalam node.js

Nov 19, 2021 pm 07:19 PM
node.js aliran fail

Artikel ini akan menganalisis aliran fail dalam Nodejs Saya harap ia akan membantu anda!

Analisis mendalam aliran fail dalam node.js

Strim Fail

Disebabkan oleh kelajuan bacaan dan storan yang berbeza serta kapasiti berbeza pelbagai media dalam komputer, salah satu daripadanya mungkin wujud untuk jangka masa yang lama semasa operasi, terdapat tiga jenis status menunggu utama

strim fail, iaitu Strim Input (Boleh Dibaca) , Strim Keluaran (Boleh Tulis) , Dupleks strim (Dupleks) . Terdapat satu lagi jenis strim yang tidak biasa digunakan, iaitu, 转换流(Transform)

menyediakan modul strim dalam nod Terdapat dua kejadian kelas dalam modul ini: Boleh Dibaca dan Boleh Ditulis, yang akan diwarisi oleh dua kelas, jadi akan ada banyak kaedah biasa, dsb.

Strim boleh dibaca (Boleh dibaca)

Strim input: Data mengalir dari sumber ke memori, memindahkan data dari cakera ke memori.

createReadStream

fs.createReadStream(路径, 配置)

Dalam konfigurasi terdapat: pengekodan (kaedah pengekodan), mula (mula membaca bait), tamat (akhir bacaan bait) ), highWaterMark (setiap jumlah yang dibaca)

highWaterMark: Jika pengekodan mempunyai nilai, nombor itu mewakili bilangan aksara; ReadStream

const readable = fs.createReadStream(nama fail, { pengekodan: 'utf-8', mula: 1, tamat: 2, // highWaterMark: });

Daftar acara

readable.on (nama acara, fungsi pengendali)

readable.on('open', (err, data)=> {
    // console.log(err);
    console.log('文件打开了');
})

readable.on('error', (data, err) => {
    console.log(data, err);
    console.log('读取文件发生错误');
})

readable.on('close', (data, err) => {
    // console.log(data, err);
    console.log('文件关闭');
})

readable.close() // 手动触发通过 readable.close()或者在文件读取完毕之后自动关闭--autoClose配置项默认为 true

readable.on('data', (data) => {
    console.log(data);
    console.log('文件正在读取');
})

readable.on('end', ()=>{
    console.log('文件读取完毕');
})
Salin selepas log masuk
Jeda bacaan Ambil

readable.pause() untuk menjeda bacaan, yang akan mencetuskan acara jeda

untuk menyambung semula bacaan

readable.resume( ) untuk menyambung semula Pembacaan akan mencetuskan acara resume

Strim boleh tulis

const ws = fs.createWriteStream(nama fail[, konfigurasi])

ws.write(data)

Tulis data, data boleh menjadi rentetan atau Penampan dan mengembalikan nilai Boolean.

Jika benar dikembalikan, ini bermakna saluran tulis tidak penuh, dan data seterusnya boleh ditulis terus Saluran tulis ialah saiz yang diwakili oleh highWaterMark dalam konfigurasi.

Jika palsu dikembalikan, ini bermakna saluran penulisan penuh, dan aksara yang tinggal mula menunggu, menyebabkan tekanan belakang.

Gunakan strim untuk menyalin dan menampal fail dan menyelesaikan masalah tekanan belakang
const ws = fs.createWriteStream(filename, {
    encoding: 'utf-8',
    highWaterMark: 2
})

const flag = ws.write('刘');
console.log(flag); // false 
这里虽然只会执行一次,但是在通道有空余空间的时候就会继续写入,并不在返回 值。

ws.write() 只会返回一次值。


const flag = ws.write('a');
console.log(flag);
const flag1 = ws.write('a');
console.log(flag1);
const flag2 = ws.write('a');
console.log(flag2);
const flag3 = ws.write('a');
console.log(flag3);

输出顺序:true、false、false、false

第二次写入的时候已经占了两字节,第三次写入后直接占满了,所以返回false
Salin selepas log masuk

const filename = path.resolve(__dirname, './file/write.txt');
const wsfilename = path.resolve(__dirname, './file/writecopy.txt');

const ws = fs.createWriteStream(wsfilename);
const rs = fs.createReadStream(filename)

rs.on('data', chumk => {
    const falg = ws.write(chumk);
    if(!falg) {
        rs.pause();
    }
})

ws.on('drain', () => {
    rs.resume();
})

rs.on('close', () => {
    ws.end();
    console.log('copy end');
})
Salin selepas log masuk
paip

Gunakan paip untuk juga terus menyalin boleh dibaca fail Menyambung strim dan strim tulis secara bersiri juga boleh menyelesaikan masalah tekanan belakang

Selepas belajar, saya rasa strim fail sangat mudah apabila membaca dan menulis sejumlah besar fail, dan ia boleh dilakukan dengan cepat dan cekap Berbanding dengan Kecekapan
rs.pipe(ws);

rs.on('close', () => {
    ws.end();
    console.log('copy end');
})
Salin selepas log masuk
dan

jauh lebih tinggi, dan tidak akan ada sekatan besar jika dikendalikan dengan betul. writeFilereadFileUntuk lebih banyak pengetahuan berkaitan nod, sila lawati:

tutorial nodejs

! !

Atas ialah kandungan terperinci Analisis mendalam aliran fail dalam node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Artikel tentang kawalan memori dalam Node Artikel tentang kawalan memori dalam Node Apr 26, 2023 pm 05:37 PM

Perkhidmatan Node yang dibina berdasarkan bukan sekatan dan dipacu peristiwa mempunyai kelebihan penggunaan memori yang rendah dan sangat sesuai untuk mengendalikan permintaan rangkaian besar-besaran. Di bawah premis permintaan besar-besaran, isu yang berkaitan dengan "kawalan memori" perlu dipertimbangkan. 1. Mekanisme kutipan sampah V8 dan had ingatan Js dikawal oleh mesin kutipan sampah

Penjelasan grafik terperinci tentang memori dan GC enjin Node V8 Penjelasan grafik terperinci tentang memori dan GC enjin Node V8 Mar 29, 2023 pm 06:02 PM

Artikel ini akan memberi anda pemahaman yang mendalam tentang memori dan pengumpul sampah (GC) enjin NodeJS V8 saya harap ia akan membantu anda!

Mari kita bincangkan tentang cara memilih imej Node.js Docker terbaik? Mari kita bincangkan tentang cara memilih imej Node.js Docker terbaik? Dec 13, 2022 pm 08:00 PM

Memilih imej Docker untuk Node mungkin kelihatan seperti perkara remeh, tetapi saiz dan potensi kelemahan imej itu boleh memberi kesan yang ketara pada proses dan keselamatan CI/CD anda. Jadi bagaimana kita memilih imej Node.js Docker yang terbaik?

Mari bercakap secara mendalam tentang modul Fail dalam Node Mari bercakap secara mendalam tentang modul Fail dalam Node Apr 24, 2023 pm 05:49 PM

Modul fail ialah enkapsulasi operasi fail asas, seperti membaca/menulis/membuka/menutup/memadam fail, dsb. Ciri terbesar modul fail ialah semua kaedah menyediakan dua versi **segerak** dan ** asynchronous**, dengan Kaedah dengan akhiran penyegerakan adalah semua kaedah penyegerakan, dan kaedah yang tidak semuanya adalah kaedah heterogen.

Node.js 19 dikeluarkan secara rasmi, mari bercakap tentang 6 ciri utamanya! Node.js 19 dikeluarkan secara rasmi, mari bercakap tentang 6 ciri utamanya! Nov 16, 2022 pm 08:34 PM

Node 19 telah dikeluarkan secara rasmi Artikel ini akan memberi anda penjelasan terperinci tentang 6 ciri utama Node.js 19. Saya harap ia akan membantu anda!

Mari bercakap tentang mekanisme GC (pengumpulan sampah) dalam Node.js Mari bercakap tentang mekanisme GC (pengumpulan sampah) dalam Node.js Nov 29, 2022 pm 08:44 PM

Bagaimanakah Node.js melakukan GC (pengumpulan sampah)? Artikel berikut akan membawa anda melaluinya.

Mari kita bincangkan tentang gelung acara dalam Node Mari kita bincangkan tentang gelung acara dalam Node Apr 11, 2023 pm 07:08 PM

Gelung peristiwa ialah bahagian asas Node.js dan mendayakan pengaturcaraan tak segerak dengan memastikan bahawa utas utama tidak disekat Memahami gelung peristiwa adalah penting untuk membina aplikasi yang cekap. Artikel berikut akan memberi anda pemahaman yang mendalam tentang gelung acara dalam Node.

Apakah yang perlu saya lakukan jika nod tidak boleh menggunakan arahan npm? Apakah yang perlu saya lakukan jika nod tidak boleh menggunakan arahan npm? Feb 08, 2023 am 10:09 AM

Sebab mengapa nod tidak boleh menggunakan arahan npm adalah kerana pembolehubah persekitaran tidak dikonfigurasikan dengan betul Penyelesaiannya ialah: 1. Buka "Sistem Sifat"; 2. Cari "Pembolehubah Persekitaran" -> "Pembolehubah Sistem", dan kemudian edit persekitaran. pembolehubah; 3. Cari lokasi folder nodejs;

See all articles