Node מספק אפשרויות שונות לכתיבה לקבצים במערכת שלך דרך המובנה fs מודול. אלו כוללים writeFile(), appendFile(), ו createWriteStream().

כמו שפות רבות, Node.js מאפשר לך לבחור בין החלפת קובץ קיים או הוספה אליו. כדאי גם ללמוד על הפערים בין כתיבת קובץ במכה אחת לבין הזרמתו.

שימוש ב-writeFile()

writeFile() היא אולי השיטה הקלה ביותר שבה אתה יכול להשתמש כדי לכתוב קובץ ב-Node.

fs.writeFile (שם קובץ, נתונים, התקשרות חזרה)

הנה דוגמה שמראה כיצד ליצור קובץ טקסט רגיל באמצעות writeFile(). אפשר כמובן ליצור סוגי קבצים אחרים כגון CSV או JSON.

const fs = לִדרוֹשׁ("fs")

fs.writeFile("test.txt", "תוכן חדש", err => {
אם (שגיאה) {
לְנַחֵם.log (שגיאה)
}
});

writeFile() תומך ב-async/await do במקום להשתמש ב-callbacks כמו בדוגמה למעלה, אתה יכול ליצור את הקובץ באופן הבא.

const fs = לִדרוֹשׁ("fs"). מבטיח

אסינכרוןפוּנקצִיָהwriteToFile() {
לְנַסוֹת {
לְהַמתִין fs.writeFile("test.txt", "חדש המשך")
} לתפוס (שגיאה) {
לְנַחֵם.log (שגיאה);
}
}

writeToFile()

כברירת מחדל, writeFile() פועל על ידי החלפת התוכן של הקובץ שצוין בתוכן חדש אם הקובץ קיים. עם זאת, ישנם דגלים שבהם אתה יכול להשתמש כדי לעקוף את הפונקציונליות הזו כגון:

instagram viewer
  • r+ - פותח את הקובץ לקריאה וכתיבה.
  • w+ - פותח את הקובץ לקריאה וכתיבה בתחילת הקובץ
  • א - פותח את הקובץ לכתיבה בסוף הקובץ.
  • a+ - פותח את הקובץ לקריאה וכתיבה בסוף הקובץ.

לדוגמה, אתה יכול להשתמש בדגל a+ כך:

const fs = לִדרוֹשׁ("fs")

fs.writeFile("test.txt", "תוכן חדש יותר", { דֶגֶל: "a+" }, שגיאה => {
אם (שגיאה) {
לְנַחֵם.log (שגיאה)
}
});

ישנם דגלים רבים אחרים של מערכת הקבצים שתוכל ללמוד עליהם ב- תיעוד צומת עבור מודול fs.

ה fs מודול מספק גם writeFileSync, ה גרסה סינכרונית של writeFile().

const fs = לִדרוֹשׁ("fs")

fs.writeFileSync("test.txt", "תוכן חדש יותר", { דֶגֶל: "a+" }, שגיאה => {
אם (שגיאה) {
לְנַחֵם.log (שגיאה)
}
});

שימוש ב-createWriteStream()

החיסרון של השימוש writeFile() זה שאתה צריך לאחסן את כל התוכן של הקובץ בבת אחת אשר אינו ניתן להרחבה עבור קבצים גדולים. createWriteStream() עם זאת, תומך בכתיבה ברצף. זה אומר שאתה יכול לכתוב נתח אחד של נתונים לקובץ בכל פעם. הנה המערכת הכללית ליצירת זרם לכתיבה.

fs.createWriteStream (נתיב, אפשרויות)

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

const fs = לִדרוֹשׁ("fs")

// צור זרם ניתן לכתיבה
תן writeableStream = fs.createWriteStream("test.txt")

// כתוב לקובץ באמצעות הזרם הניתן לכתיבה
writeableStream.write("תוכן חדש");

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

const fs = לִדרוֹשׁ("fs")
תן writableStream = fs.createWriteStream("test.txt");
process.stdin.pipe (writableStream);

אם אתה מפעיל את התוכנית הזו משורת הפקודה, אתה יכול לצאת ממנה עם Ctrl + d אוֹ Ctrl + c.

אתה יכול גם לכתוב מקובץ אחר לזרם הניתן לכתיבה. שקול את הדוגמה הבאה:

const fs = לִדרוֹשׁ("fs")
תן readableStream = fs.createReadStream("test.txt");
תן writableStream = fs.createWriteStream("test2.txt");

readableStream.on("data", פוּנקצִיָה(חתיכה) {
writableStream.write (נתח);
});

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

שימוש ב-appendFile()

appendFile() היא שיטה פשוטה להוספת תוכן לסוף הקובץ. הנה דוגמה.

const fs = לִדרוֹשׁ("fs")

fs.appendFile("test.txt", "תוכן נוסף", err => {
אם (שגיאה) {
לְנַחֵםשגיאה (שגיאה);
}
});

אתה יכול גם להשתמש ב-async/wait.

const fs = לִדרוֹשׁ("fs"). מבטיח

אסינכרוןפוּנקצִיָהappendToFile() {
לְנַסוֹת {
לְהַמתִין fs.appendFile("test.txt", "תוכן נוסף")
} לתפוס (שגיאה) {
לְנַחֵם.log (שגיאה);
}
}

appendToFile()

כמו writeFile(), ל-appendFile יש גם גרסה סינכרונית:

fs.appendFileSync("test.txt", "תוכן נוסף");

השתמש בזרמים כדי לכתוב קבצים גדולים

מאמר זה דן במספר גישות לכתיבת קבצים ב-Node. בעוד ש-writeFile() הוא פשוט מאוד, הוא מתאים יותר לגדלי קבצים קטנים מכיוון שהוא אינו מאפשר כתיבה רציפה. אם יש לך עסק עם קבצים גדולים, עדיף להשתמש בזרמים הניתנים לכתיבה.