วิธีทำงานกับสตรีมที่เขียนได้ใน Node.js

Withi Thangan Kab Stri M Thi Kheiyn Di Ni Node Js



ข้อมูลจะถูกถ่ายโอนผ่านเครือข่ายระหว่างสถานที่ต้นทางและปลายทางในรูปแบบของสตรีม ฝั่งผู้ส่งเรียกว่าต้นทางและฝั่งผู้รับจะแสดงเป็นสตรีมปลายทาง การใช้สตรีมเหล่านี้ ข้อมูลในรูปแบบข้อความหรือรูปแบบเสียงหรือวิดีโอสามารถส่งและรับได้โดยมีโอกาสที่ข้อมูลจะรั่วไหลหรือสูญหายน้อยที่สุด

คู่มือนี้จะอธิบายการทำงานกับสตรีมที่เขียนได้ใน Node.js

วิธีทำงานกับสตรีมที่เขียนได้ใน Node.js

เขียนได้ ” สตรีมสามารถใช้เพื่อแทรกข้อมูลใหม่ในไฟล์หรือสามารถวางเนื้อหาของสตรีมสุ่มอื่นได้ การแปลงข้อมูลหรือตำแหน่งส่วนใหญ่เกิดขึ้นด้วยความช่วยเหลือของ “ ท่อ() ' วิธี. วิธีการนี้ทำให้กระบวนการแปลงและกำหนดเนื้อหาสะดวกยิ่งขึ้น ในขณะเดียวกันก็ลดโอกาสที่ข้อมูลจะขัดแย้งกัน







ไวยากรณ์



สตรีมที่เขียนได้ถูกสร้างขึ้นโดยการเรียกใช้วิธีการด้านล่าง:



FS createWriteStream ( 'targetFile.ext' ) ;

ในไวยากรณ์ข้างต้น ' creatWriteStream () ” ถูกเรียกใช้โดยวัตถุของการนำเข้า “ FS ” และไฟล์ที่จะเขียนข้อมูลจะถูกส่งผ่านเป็นพารามิเตอร์





มาดูตัวอย่างสองสามตัวอย่างสำหรับสตรีมแบบเขียนได้ใน Node.js

ตัวอย่างที่ 1: การเขียนเนื้อหาของไฟล์อื่นโดยใช้สตรีมที่เขียนได้

ในตัวอย่างด้านล่าง ไฟล์สุ่มจะถูกส่งผ่านสตรีมที่อ่านได้ จากนั้นเนื้อหาไฟล์นี้จะถูกวางไว้ในไฟล์อื่นที่มีอยู่ในสตรีมแบบเขียนได้:



คือ fsObj = จำเป็นต้อง ( 'เอฟเอส' ) ;

ค่าคงที่ กระแสข้อมูล = fsObj. สร้างReadStream ( 'mynewfile1.txt' ) ;

ค่าคงที่ เขียนสตรีม = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;

กระแสข้อมูล. ท่อ ( เขียนสตรีม ) ;

คำอธิบายของรหัสข้างต้น:

  • ประการแรก “ FS ” โมดูลถูกนำเข้าและอ็อบเจ็กต์ถูกเก็บไว้ในโมดูลใหม่ “ fsObj ' ตัวแปร.
  • ต่อไปด้วยความช่วยเหลือของ “ ฟาสObj ” เรียกใช้ “ createReadStream() ” วิธีการสร้างสตรีมที่อ่านได้และส่งไฟล์ที่อ่านได้ที่เลือกไว้เป็นพารามิเตอร์
  • จากนั้นสตรีมที่เขียนได้จะถูกสร้างขึ้นโดยการเรียกใช้ ' createWriteStream() ” วิธีการเขียนเนื้อหาในไฟล์ที่ให้มา
  • เก็บผลลัพธ์ของวิธีการเรียกใช้ข้างต้นไว้ใน “ กระแสข้อมูล ' และ ' เขียนสตรีม ” ตัวแปรตามลำดับ
  • สุดท้ายให้เรียกใช้ '. ท่อ() ” วิธีการตามด้วย “ กระแสข้อมูล ” และเป็นผู้นำด้วย “ เขียนสตรีม ” ตัวแปร

ตอนนี้ให้รันไฟล์ที่มี (controlFlow.js) โดยรันคำสั่งด้านล่าง:

ตัวอย่างที่ 2: การเขียนเนื้อหาลงไฟล์โดยใช้วิธี “stream.write()”

ในตัวอย่างนี้ “ เขียน() ” วิธีการใช้เพื่อเขียนข้อมูลบนไฟล์ที่มีอยู่ในสตรีมแบบเขียนได้:

คือ fsObj = จำเป็นต้อง ( 'เอฟเอส' ) ;
ค่าคงที่ httpObj = จำเป็นต้อง ( 'http' ) ;

ค่าคงที่ ให้บริการในพื้นที่ = httpObj. สร้างเซิร์ฟเวอร์ ( ( การร้องขอการตอบสนอง ) => {
พยายาม {
ค่าคงที่ เซลล์สตรีม = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;
เซลล์สตรีม เขียน ( 'ข้อมูลที่จะวางลงในไฟล์เป้าหมาย' ) ;
เซลล์สตรีม จบ ( ) ;
การตอบสนอง. จบ ( 'ข้อมูลที่เขียนผ่านสตรีมที่เขียนได้' )
}
จับ ( ข้อผิดพลาด ) {
คอนโซล ข้อผิดพลาด ( ข้อผิดพลาด ) ;
}
} ) ;
ให้บริการในพื้นที่ ฟัง ( 8080 , ( ) => {
คอนโซล บันทึก ( 'เซิร์ฟเวอร์กำลังทำงานบนหมายเลขพอร์ต Localhost: '8080' ' )
) ;

คำอธิบายของโค้ดข้างต้นเป็นดังนี้:

  • ขั้นแรก นำเข้าสิ่งที่จำเป็น “ FS ' และ ' http ” โมดูลและจัดเก็บวัตถุไว้ใน “ fsObj ' และ ' httpObj ” ตัวแปรตามลำดับ
  • ถัดไป เซิร์ฟเวอร์ได้ถูกสร้างขึ้นโดยการเรียกใช้ “ สร้างเซิร์ฟเวอร์() ” วิธีการและจัดเก็บเซิร์ฟเวอร์ที่สร้างขึ้นใหม่นี้ใน “ ให้บริการในพื้นที่ ' ตัวแปร.
  • จากนั้นใช้เครื่องหมาย “ พยายาม ” บล็อกภายในฟังก์ชันการเรียกกลับของวิธีการและเรียกใช้ “ createWriteStream() ” วิธีการใช้ “ fsObj ' ตัวแปร.
  • ส่งไฟล์เป้าหมายที่ต้องแทรกเนื้อหาภายในวงเล็บเมธอดนี้และเก็บผลลัพธ์ไว้ใน ' เซลล์สตรีม ' ตัวแปร
  • ใช้ “ เขียน() ” กับตัวแปรนี้และส่งข้อความจำลองภายในวงเล็บซึ่งจะถูกเขียนลงในไฟล์เป้าหมาย
  • ปิดสตรีมโดยการเรียกใช้ ' จบ() ” วิธีการและแสดงข้อความแสดงความสำเร็จบนหน้าเว็บโดยเรียกใช้คำสั่ง “ การตอบกลับ.end() ' วิธี. ที่ไหน ' การตอบสนอง ” คือพารามิเตอร์การโทรกลับของ “ สร้างเซิร์ฟเวอร์ ' วิธี.
  • ใช้ “ จับ ” บล็อกเพื่อจัดการกับข้อผิดพลาดที่เกิดขึ้น
  • สุดท้ายให้ฟังหรือตั้งค่าเซิร์ฟเวอร์ผ่านหมายเลขพอร์ต “ 8080 ” และแสดงข้อความแสดงความสำเร็จด้วยความช่วยเหลือของฟังก์ชันโทรกลับ

ผลลัพธ์ที่สร้างขึ้นแสดงให้เห็นว่าข้อความที่ให้ไว้นั้นถูกเขียนโดยใช้ ' เขียน() ' วิธี:

ตัวอย่างที่ 3: การเขียนข้อมูลเดียวกันในหลายไฟล์

ในตัวอย่างนี้ ไฟล์เดียวจะถูกอ่านจากสตรีมโดยใช้คำสั่ง “ createReadStream() ' วิธี. จากนั้น เนื้อหาที่อ่านจะถูกเขียนทับหลายไฟล์โดยใช้เครื่องหมาย “ createWriteStream() ' และ ' .ท่อ() ” วิธีการ:

คือ fsObj = จำเป็นต้อง ( 'เอฟเอส' ) ;

ค่าคงที่ กระแสข้อมูล = fsObj. สร้างReadStream ( 'mynewfile1.txt' ) ;

ค่าคงที่ เขียนสตรีม1 = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;

ค่าคงที่ เขียนStream2 = fsObj. createWriteStream ( 'usecase.txt' ) ;

กระแสข้อมูล. ท่อ ( เขียนสตรีม1 ) ;

กระแสข้อมูล. ท่อ ( เขียนStream2 ) ;

ในข้อมูลโค้ดข้างต้น:

  • createReadStream() ” ถูกเรียกใช้และไฟล์ที่มีเนื้อหาที่ต้องการอ่านจะถูกส่งผ่านเป็นพารามิเตอร์ ผลลัพธ์ของวิธีนี้จะถูกเก็บไว้ใน “ กระแสข้อมูล ' ตัวแปร.
  • ต่อไป “ createWriteStream() ” มีการเรียกเมธอดและไฟล์เป้าหมายจะถูกส่งผ่านเป็นพารามิเตอร์
  • ในทำนองเดียวกัน เส้นทางสำหรับไฟล์ที่สองจะถูกส่งผ่านเป็นสตรีมแบบเขียนได้และผลลัพธ์จะถูกเก็บไว้ใน “ เขียนสตรีม1 ' และ ' เขียนStream2 ” ตัวแปร
  • หลังจากนั้นใช้ “ .ท่อ() ” วิธีการเนื้อหาที่เก็บไว้ใน “ กระแสข้อมูล ” ตัวแปรถูกกำหนดให้กับ “ เขียนสตรีม1 ' และ ' เขียนStream2 ” ตัวแปร

ผลลัพธ์ที่สร้างขึ้นแสดงให้เห็นว่าเนื้อหาไฟล์ที่ให้มาได้ถูกแทรกลงในไฟล์ที่ให้ไว้เหนือสตรีม:

นั่นคือทั้งหมดที่เกี่ยวกับการทำงานของสตรีมแบบเขียนได้ใน Node.js

บทสรุป

หากต้องการทำงานกับสตรีมแบบเขียนได้ วิธีการของ “ createWriteStream() ” ถูกเรียกใช้ผ่านทาง “ FS ” วัตถุโมดูล เส้นทางไฟล์เป้าหมายที่ต้องเขียนเนื้อหาจะถูกส่งเป็นพารามิเตอร์ ในการเขียนเนื้อหาจากสตรีมอื่น “ .ท่อ() ” มีการใช้วิธี “ เขียน() ” ยังมีประโยชน์เมื่อต้องเขียนเนื้อหาลงในไฟล์เป้าหมายโดยตรง โพสต์นี้ได้อธิบายขั้นตอนการทำงานกับสตรีมแบบเขียนได้