מדריך זה יסביר את השימוש בזרמים קריאים ב-Node.js.
כיצד להשתמש בזרמים קריא ב-Node.js?
ה ' קָרִיא ' זרמים נוצרים על ידי הפעלת ' createReadStream() וניתן להציג את נתוני הקריאה בדף האינטרנט על ידי יצירת השרת המקומי. מאזיני האירוע בעזרת ' עַל() ניתן לצרף שיטות גם לזרמים הניתנים לקריאה כדי להציג הודעות או לבצע פעולות ספציפיות כאשר הקריאה של הקובץ מתחילה או מסתיימת.
עיין בדוגמה להדגמה מעשית.
דוגמה: קריאה והצגת תוכן בשרת באמצעות זרמים קריא
בדוגמה זו, התוכן של קובץ מסופק נקרא ולאחר מכן מוצג בדפדפן האינטרנט:
const fsObj = לִדרוֹשׁ ( 'fs' ) ;
const httpObj = לִדרוֹשׁ ( 'http' ) ;
const שרת מקומי = httpObj. createServer ( ( בקשת תגובה ) => {
לְנַסוֹת {
// קובץ ממוקד לקריאה
const זרם נתונים = fsObj. ליצורReadStream ( 'usecase.txt' ) ;
// העבר את הקובץ לתגובה
זרם נתונים. צינור ( תְגוּבָה ) ;
} לתפוס ( שגיאות ) {
לְנַחֵם. שְׁגִיאָה ( שגיאות ) ;
}
} ) ;
שרת מקומי. להקשיב ( 8080 , ( ) => {
לְנַחֵם. עֵץ ( 'השרת פועל על מספר יציאת Localhost: '8080' ' )
} ) ;
התיאור של הקוד לעיל הוא כדלקמן:
- ראשית, ייבא את ' fs ' ו' http 'מודולים ולאחסן את האובייקטים שלהם ב' fsObj ' ו' httpObj ' משתנים בהתאמה.
- לאחר מכן, השרת נוצר על ידי הפעלת ה-' createServer() שיטת ' ואחסון השרת החדש שנוצר ב' שרת מקומי 'משתנה.
- לאחר מכן, השתמש ב-' לְנַסוֹת ' לחסום בתוך פונקציית ההתקשרות חזרה של השיטה ולהפעיל את ' createReadStream() שיטת ' באמצעות ' fsObj 'משתנה.
- העבר את תוכן הקובץ הממוקד שצריך לקרוא בתוך סוגריים של שיטה זו ואחסן את התוצאה ב' זרם נתונים 'משתנה.
- הכנס את ה ' זרם נתונים ' משתנה לתוך ' .צינור() ' שיטה לשליחת התגובה.
- השתמש ב' לתפוס ' לחסום כדי לטפל בשגיאות שהתרחשו.
- לבסוף, האזן או הגדר את השרת על מספר היציאה ' 8080 ' ולהציג את הודעת ההצלחה בעזרת פונקציית ההתקשרות חזרה שלו.
בצע את הקובץ המכיל (controlFlow.js) של הקוד שלמעלה, שהוא באמצעות הפקודה שצוינה להלן:
צומת controlFlow. jsהפלט שנוצר מראה שבעזרת ' .צינור() ' ו' זרם קריא ', נתוני הקובץ נקראו ונשלחו לזרם היעד כדי להציג אותם בדף האינטרנט:
דוגמה 2: קריאת קבצים סטטיים באופן מקומי באמצעות ReadStream
במקרה זה, הקובץ שסופק מעל הזרם נבחר והתוכן שלו מוצג על פני חלון המסוף בעזרת מאזיני אירועים:
const fsObj = לִדרוֹשׁ ( 'fs' ) ;const streamObj = fsObj. ליצורReadStream ( 'usecase.txt' ) ;
streamObj. עַל ( 'נתונים' , ( תוֹכֶן ) => {
לְנַחֵם. עֵץ ( תוֹכֶן. toString ( ) ) ;
} ) ;
streamObj. עַל ( 'סוֹף' , ( ) => {
לְנַחֵם. עֵץ ( ' \n סיימתי לקרוא את הקובץ'. ) ;
} ) ;
streamObj. צינור ( תהליך. stdout ) ;
התיאור של הקוד לעיל הוא כדלקמן:
- קודם ה ' fs מודול 'מיובא והאובייקט שלו מאוחסן ב' fsObj 'משתנה.
- לאחר מכן, באמצעות ' fsObj ' קורא את ' createReadStream() ” שיטה ומעביר את הנתיב של הקובץ הממוקד שצריך לאחזר את תוכנו. אחסן את התוצאה של השיטה במשתנה חדש ' streamObj '.
- צרף את ' עַל() 'שיטה עם 'streamObj' אשר מפעילה פונקציית התקשרות חוזרת כאשר ' נתונים ' מאוחזר. הנתונים המאוחזרים מועברים כפרמטר עבור פונקציית ה-callback הממירה את הנתונים לפורמט String ומציגה אותם על גבי המסוף.
- שוב צרף את ' עַל() 'שיטה עם ' streamObj ' והפעם פונקציית ה-callback שלו מציגה הודעת סיום כאשר קריאת הקובץ מסתיימת.
הפלט שנוצר לאחר ביצוע הקוד לעיל מראה שנתוני הקריאה לאורך הודעת הסיום הוצגו על גבי המסוף:
זה הכל לגבי השימוש בזרמים קריאים ב-Node.js.
סיכום
כדי לעבוד עם זרמים קריאים ב-Node.js, השיטה של ' createReadStream() ' מופעל באמצעות ' fs אובייקט מודול. נתיב הקובץ הממוקד עליו צריך לכתוב את התוכן מועבר כפרמטר השיטה. ניתן להשתמש בו עם ' .צינור() שיטה לביצוע משימות נוספות על הנתונים שאוחזרו כמו כתיבת התוכן בקובץ אחר. פוסט זה המחיש את הליך העבודה עם זרמים קריאים.