מדריך זה מסביר את העבודה עם זרמים הניתנים לכתיבה ב-Node.js.
כיצד לעבוד עם זרמים לכתיבה ב-Node.js?
ה ' ניתן לכתיבה ' זרם יכול לשמש כדי להוסיף נתונים חדשים לקובץ או יכול למקם את התוכן של זרם אקראי אחר. המרת הנתונים או מיקום הנתונים מתרחשים בעיקר בעזרת ' צינור() ' שיטה. שיטה זו הופכת את תהליך ההמרה וההקצאה לתוכן נוח יותר תוך הפחתת הסיכויים להתנגשות נתונים.
תחביר
הזרם הניתן לכתיבה נוצר על ידי הפעלת השיטה הבאה:
fs. createWriteStream ( 'targetFile.ext' ) ;
בתחביר לעיל, ה-' creatWriteStream() ' מופעל על ידי אובייקט ה-' המיובא fs ” מודול, והקובץ עליו ייכתבו הנתונים מועבר כפרמטר.
בואו נסתכל על כמה דוגמאות לזרמים הניתנים לכתיבה ב-Node.js.
דוגמה 1: כתיבת תוכן של קובץ אחר באמצעות זרם לכתיבה
בדוגמה שלמטה, הקובץ האקראי נשלח דרך הזרם הניתן לקריאה, ולאחר מכן תוכן הקובץ הזה מונח בקובץ אחר זמין בזרם הניתן לכתיבה:
היה fsObj = לִדרוֹשׁ ( 'fs' ) ;
const זרם נתונים = fsObj. ליצורReadStream ( 'mynewfile1.txt' ) ;
const writeStream = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;
זרם נתונים. צינור ( writeStream ) ;
תיאור הקוד לעיל:
- קודם ה ' fs ' מודול מיובא והאובייקט שלו מאוחסן ב' החדש ' fsObj 'משתנה.
- לאחר מכן, בעזרת ' fasObj ' להפעיל את ' createReadStream() ' שיטה ליצירת זרם קריא ולהעביר את הקובץ הקריא הנבחר כפרמטר שלו.
- לאחר מכן, הזרם הניתן לכתיבה נוצר על ידי הפעלת ה-' createWriteStream() ' שיטה לכתוב את התוכן בקובץ שסופק.
- אחסן את התוצאות של השיטות שהופעלו לעיל ב' זרם נתונים ' ו' writeStream ' משתנים בהתאמה.
- לבסוף, הפעל את '. צינור() שיטת ' ואחריה ' זרם נתונים ' ומוביל עם ' writeStream ' משתנים.
כעת, הפעל את הקובץ המכיל (controlFlow.js) על ידי הפעלת הפקודה שלהלן:
דוגמה 2: כתיבת התוכן לקובץ באמצעות שיטת 'stream.write()'.
בדוגמה זו, ' לִכתוֹב() שיטת ' משמשת לכתיבת נתונים על הקובץ הזמין על הזרם הניתן לכתיבה:
היה fsObj = לִדרוֹשׁ ( 'fs' ) ;const httpObj = לִדרוֹשׁ ( 'http' ) ;
const לשרת מקומי = httpObj. createServer ( ( בקשת תגובה ) => {
לְנַסוֹת {
const cellStream = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;
cellStream. לִכתוֹב ( 'נתונים שיוצבו בקובץ הממוקד.' ) ;
cellStream. סוֹף ( ) ;
תְגוּבָה. סוֹף ( 'נתונים נכתבים באמצעות זרם לכתיבה' )
}
לתפוס ( שְׁגִיאָה ) {
לְנַחֵם. שְׁגִיאָה ( שְׁגִיאָה ) ;
}
} ) ;
לשרת מקומי. להקשיב ( 8080 , ( ) => {
לְנַחֵם. עֵץ ( 'השרת פועל על מספר יציאת Localhost: '8080' ' )
) ;
התיאור של הקוד לעיל הוא כדלקמן:
- ראשית, ייבא את ' fs ' ו' http 'מודולים ולאחסן את האובייקטים שלהם ב' fsObj ' ו' httpObj ' משתנים בהתאמה.
- לאחר מכן, השרת נוצר על ידי הפעלת ה-' createServer() שיטת ' ואחסון השרת החדש שנוצר ב' לשרת מקומי 'משתנה.
- לאחר מכן, השתמש ב-' לְנַסוֹת ' לחסום בתוך פונקציית ההתקשרות חזרה של השיטה ולהפעיל את ' createWriteStream() שיטת ' באמצעות ' fsObj 'משתנה.
- העבירו את הקובץ הממוקד עליו צריך להכניס את התוכן, בתוך סוגריים של שיטה זו ואחסנו את התוצאה ב' cellStream 'משתנה
- השתמש ב' לִכתוֹב() ” שיטה עם המשתנה הזה והעבירו הודעת דמה בתוך הסוגרייה שלו שתכתוב בקובץ הממוקד.
- סגור את הזרם על ידי הפעלת ה' סוֹף() ' השיטה והצג הודעת הצלחה בדף האינטרנט על ידי הפעלת ה' response.end() ' שיטה. איפה ' תְגוּבָה ' הוא פרמטר ההתקשרות חזרה של ' createServer ' שיטה.
- השתמש ב' לתפוס ' לחסום כדי לטפל בשגיאות שהתרחשו.
- לבסוף, האזן או הגדר את השרת על מספר היציאה ' 8080 ' ולהציג את הודעת ההצלחה בעזרת פונקציית ההתקשרות חזרה שלו.
הפלט שנוצר מראה שהטקסט שסופק נכתב באמצעות ' לִכתוֹב() ' שיטה:
דוגמה 3: כתיבת אותם נתונים על מספר קבצים
בדוגמה זו, קובץ בודד ייקרא מהזרם באמצעות ' createReadStream() ' שיטה. לאחר מכן, התוכן הנקרא נכתב על פני מספר קבצים באמצעות ' createWriteStream() ' ו' .צינור() ' שיטות:
היה fsObj = לִדרוֹשׁ ( 'fs' ) ;const זרם נתונים = fsObj. ליצורReadStream ( 'mynewfile1.txt' ) ;
const writeStream1 = fsObj. createWriteStream ( 'mynewfile2.txt' ) ;
const writeStream2 = fsObj. createWriteStream ( 'usecase.txt' ) ;
זרם נתונים. צינור ( writeStream1 ) ;
זרם נתונים. צינור ( writeStream2 ) ;
בקטע הקוד שלמעלה:
- ה ' createReadStream() מופעלת השיטה והקובץ שאת תוכנו צריך לקרוא מועבר כפרמטר שלו. התוצאה של שיטה זו מאוחסנת ב' זרם נתונים 'משתנה.
- לאחר מכן, ה' createWriteStream() נקראת השיטה והקובץ הממוקד מועבר כפרמטר שלו.
- באותו אופן, הנתיב של הקובץ השני מועבר גם כזרם לכתיבה והתוצאות מאוחסנות ב' writeStream1 ' ו' writeStream2 ' משתנים.
- לאחר מכן, באמצעות ' .צינור() ' שיטת התוכן המאוחסן ב' זרם נתונים משתנה ' מוקצה ל' writeStream1 ' ו' writeStream2 ' משתנים.
הפלט שנוצר מראה שתוכן הקובץ שסופק הוכנס לקבצים שסופקו דרך הזרמים:
זה הכל לגבי העבודה של זרמים לכתיבה ב-Node.js.
סיכום
כדי לעבוד עם זרמים הניתנים לכתיבה, השיטה של ' createWriteStream() ' מופעל באמצעות ' fs אובייקט מודול. נתיב הקובץ הממוקד עליו צריך לכתוב את התוכן מועבר כפרמטר שלו. כדי לכתוב את התוכן מזרם אחר יש ' .צינור() נעשה שימוש בשיטה. ה ' לִכתוֹב() השיטה מועילה גם כשמדובר בכתיבת תוכן ישירות על הקובץ הממוקד. פוסט זה המחיש את הליך העבודה עם זרמים הניתנים לכתיבה.