PracticU

קריאה וכתיבה לקובץ ב-NodeJS

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › קריאה וכתיבה לקובץ ב-NodeJS
מילון מושגים:
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
UTF-8 - שיטת קידוד נפוצה של Unicode, שמייצגת כל תו במספר משתנה של בתים ותואמת ל-ASCII.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
ASCII - תקן לקידוד תווים שמייצג אותיות, ספרות וסימנים כמספרים, ומשמש בסיס לייצוג טקסט במחשב.
שרת - מחשב או תוכנה שמספקים שירות למחשבים אחרים (לקוחות) ברשת, למשל אחסון קבצים, אתר אינטרנט או מסד נתונים, ומגיבים לבקשות שלהם.
Callback - פונקציה שמועברת כארגומנט לפונקציה אחרת כדי שתופעל מאוחר יותר, לרוב בסיום פעולה.
Promise - אובייקט ב-JavaScript שמייצג תוצאה עתידית של פעולה אסינכרונית, שתושלם בהצלחה או תיכשל.

קריאה וכתיבה לקובץ ב-NodeJS
בשיטה הסינכרונית כתיבה וקריאה מקבצים הן פשוטות מאוד, אבל כל פעולה חוסמת את התוכנית עד שהיא מסתיימת.
כתיבה לקובץ
1. fs.writeFileSync('data/myfile.txt', 'Hello'): יוצר את הקובץ, או דורס אותו אם הוא כבר קיים.
2. שורה חדשה: ב-Windows שורה חדשה נכתבת כ-\r\n, שני תווים: carriage return ו-line feed. המרצה מסביר שמקורם של שני התווים בהרגל של מכונת הכתיבה, ושהם נשמרו גם במחשבים. בכתיבה של \n בלבד חלק מהמערכות לא יזהו שורה חדשה.
3. הוספה: fs.appendFileSync מוסיף לסוף הקובץ. אם לא מוסיפים \r\n, הטקסט החדש ייכתב באותה שורה.
קריאה מקובץ
fs.readFileSync('data/myfile.txt', 'utf-8') מחזיר את התוכן כמחרוזת. הקידוד utf-8 (יוניקוד) תומך בעברית, בערבית ובשפות נוספות. הקידוד ASCII תומך רק באנגלית, ולכן לא מתאים לטקסט בעברית.
שימו לב
בשיטה הסינכרונית כל פעולה תוקעת את הזרימה של התוכנית. בשרת שמשרת לקוחות רבים עדיף להשתמש בגרסאות האסינכרוניות של הפעולות האלה, שמחזירות תוצאה דרך callback או Promise.
השיעור הבא בקורס: קריאה וכתיבה אסינכרונית לקובץ ב-NodeJS

פרקי ההרצאה: קריאה וכתיבה לקובץ ב-NodeJS

  1. 00:00

    כתיבת קובץ עם writeFileSync

  2. 01:21

    הוספת שורה חדשה ודריסת הקובץ

  3. 01:59

    תו שורה חדשה CR LF במערכות הפעלה

  4. 03:15

    הוספת תוכן לסוף קובץ עם appendFile

  5. 04:14

    קריאת קובץ בשיטה סינכרונית עם readFileSync

תמלול ההרצאה: קריאה וכתיבה לקובץ ב-NodeJS

הטקסט המלא של הדקות הראשונות בהרצאה «קריאה וכתיבה לקובץ ב-NodeJS» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    בסרטון הקודם ראינו איך אנחנו יכולים לבצע כל מיני פעולות על קבצים ותיקיות. בסרטון הזה אנחנו הולכים לראות איך אנחנו הולכים לכתוב ולקרוא מקבצים, אבל נתחיל עם השיטה הפשוטה שהיא שיטה סינכרונית.

  2. 00:18

    אז יש לנו את ה-file.system, יש לנו כאן data, תיקיה שאין בה כלום כרגע, ואנחנו רוצים fs, ויש לנו את הפונקציה writefile.writefile.

  3. 00:31

    רק מהשם שלה אפשר להבין שהיא פונקציה אסינכרונית, ואם אנחנו רוצים את הגרסה האסינכרונית זה writefile.sync. הדבר הראשון שהוא אומר לי, ותגיד, איזה נתיב אתה רוצה לכתוב?

  4. 00:46

    בואו נכתוב לתוך תיקיית data לקובץ שנקרא myfile.txt ואז הוא אומר לי תגיד מה המחרוזת או הדאטה שאתה רוצה לכתוב לתוך הקובץ הזה? בואו נכתוב Hello והכל. נריץ, יש לנו node-app, go, הנה אני רואה, קראתי לו file, file, רציתי לקרוא לו myfile, טעות, נריץ, והנה myfile, הלו, מה קורה אם אני רוצה לכתוב עוד שורה?

  5. 01:28

    האם אנחנו יכולים לרשום פה this is the second line בצורה כזאת? בואו נריץ, נראה מה קורה, נסתכל על הקובץ, דא ראס, אם אנחנו משתמשים ב-Write File Sync, אז הוא דורס כל פעם את הקובץ הקודם.

  6. 01:50

    אוקיי, אז איך אנחנו בכל זאת יכולים בבת אחת לכתוב את זה? אז יש לנו אפשרות לבצע פה איזשהו Enter. אנחנו יכולים לרשום פה backslash r ו-backslash n.

  7. 02:06

    Enter האמיתי זה שני תווים, backslash r ואחר כך backslash n ולא רק backslash n. אם אתם כותבים רק backslash n יש מערכות שינסו לקרוא את הקובץ ולא יבינו שזה באמת enter.

  8. 02:21

    אם אתם רושמים backslash r ו-backslash n כל המערכות ידעו שזה enter אמיתי. ה-enter האמיתי הוא שני תווים, יש לזה איזו משמעות היסטורית של מכונת כתיבה.

  9. 02:35

    זה נקרא carriage return וזה נקרא line feed. carriage return זה להחזיר את ה-carriage, כן, את הדבר הזה של המכונת כתיבה להתחלה, ו-line feed זה להזרים לו קצת נייר, כלומר להזיז ידית כזאת שהנייר יוזרם למכונת כתיבה, ובגלל מחשבים נוצרו לא הרבה אחרי שהשתמשו במכונת כתיבה, אז אמרו, אוקיי, כנראה שבמחשב זה גם צריך

  10. 03:03

    להיות שני תווים, ואז ה-enter נהיה שני תווים מאז ועד היום. יש לנו Node-up, בואו נריץ, נסתכל על הקובץ, והנה הצלחנו לבצע Enter. עכשיו, יש לנו אפשרות גם לרשום 0.appendfile במקרה הזה, סינק appendfile בו תוסיף לסוף הקובץ דאטה מסוים.

  11. 03:35

    בואו נלך שוב פעם ל-myfile.txt וניתן לו את הדאטה הנוסף. This is another line good אבל השאלה היא האם אוטומטית הוא יהיה בשורה חדשה או בהמשך של השורה הקודמת בואו נבדוק את זה נסתכל על הקובץ ונראה this is another line ולכן כדאי היה לנו כאן לרשום גם כן backslash r backslash n בכדי שבאמת זאת תהיה שורה אמיתית עם enter בסוף

  12. 04:09

    בואו נבדוק עכשיו את הקובץ Hello this is the second line this is another line והנה יש לנו עכשיו אפשרות לכתוב לקובץ חדש ולדרוס כל קובץ אחר קיים אם קיים, או להוסיף לקובץ.

  13. 04:25

    הדבר הבא שאנחנו רוצים לעשות זה לקרוא מהקובץ. אם אנחנו עושים את זה בשיטה סינכרונית זה מאוד פשוט, מפני שהפונקציה פשוט תחזיר לנו את התוכן של הקובץ.

  14. 04:36

    אז בואו נייצר פה משתנה שנקרא FileContent ונלך ל-0.ReadFileSync,

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: עבודה עם קבצים ב-NodeJS

ההרצאה הבאה: קריאה וכתיבה אסינכרונית לקובץ ב-NodeJS

הרצאות קשורות מקורסים אחרים

  • הגבלת קריאה וכתיבה של משתמשים על דיסק USB
  • קריאה ל-Stored Procedure
  • שמירה של Canvas לקובץ
  • העברת Interceptors לקובץ נפרד

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React