คู่มือนี้จะอธิบายการทำงานกับสตรีมที่เขียนได้ใน 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 ” วัตถุโมดูล เส้นทางไฟล์เป้าหมายที่ต้องเขียนเนื้อหาจะถูกส่งเป็นพารามิเตอร์ ในการเขียนเนื้อหาจากสตรีมอื่น “ .ท่อ() ” มีการใช้วิธี “ เขียน() ” ยังมีประโยชน์เมื่อต้องเขียนเนื้อหาลงในไฟล์เป้าหมายโดยตรง โพสต์นี้ได้อธิบายขั้นตอนการทำงานกับสตรีมแบบเขียนได้