خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

آموزش نحوه نوشتن فایل در Node

در مورد پشتیبانی عالی Node برای نوشتن در فایل سیستم با استفاده از جاوا اسکریپت اطلاعات کسب کنید.

Node از طریق ماژول داخلی fs گزینه های مختلفی را برای نوشتن روی فایل های سیستم شما فراهم می کند. اینها عبارتند از writeFile()، appendFile() و createWriteStream().

مانند بسیاری از زبان ها، Node.js به شما امکان می دهد بین بازنویسی یک فایل موجود یا الحاق به آن یکی را انتخاب کنید. همچنین باید در مورد معاوضه بین نوشتن یک فایل یکباره و پخش آن اطلاعات کسب کنید.

استفاده از writeFile()

WriteFile() شاید ساده ترین روشی باشد که می توانید برای نوشتن یک فایل در Node استفاده کنید.

fs.writeFile(filename, data, callback)

در اینجا یک مثال نشان می دهد که چگونه یک فایل متنی ساده با استفاده از writeFile ایجاد کنید. البته می توانید انواع فایل های دیگری مانند CSV یا JSON ایجاد کنید.

const fs = require("fs")
 
fs.writeFile("test.txt", "New content", err => {
    if (err) {
        console.log(err)
    }
});

WriteFile() از async/await do پشتیبانی می کند به جای استفاده از callbacks مانند مثال بالا، می توانید فایل را به صورت زیر ایجاد کنید.

const fs = require("fs").promises
 
async function writeToFile() {
    try {
        await fs.writeFile("test.txt", "New cont")
    } catch (err) {
        console.log(err);
    }
}
 
writeToFile()

به طور پیش فرض، writeFile() با جایگزینی محتویات فایل مشخص شده با محتوای جدید در صورت وجود فایل کار می کند. با این حال، پرچم هایی وجود دارد که می توانید از آنها برای لغو این عملکرد استفاده کنید، مانند:

  • r+ – فایل را برای خواندن و نوشتن باز می کند.
  • w+ – فایل را برای خواندن و نوشتن در ابتدای فایل باز می کند
  • a – فایل را برای نوشتن در انتهای فایل باز می کند.
  • a+ – فایل را برای خواندن و نوشتن در انتهای فایل باز می کند.
مطلب مرتبط:   نحوه استفاده از دستور سوئیچ در سی شارپ

به عنوان مثال، می توانید از پرچم a+ به صورت زیر استفاده کنید:

const fs = require("fs")
 
fs.writeFile("test.txt", "Newer content", { flag: "a+" }, err => {
    if (err) {
        console.log(err)
    }
});

بسیاری دیگر از پرچم‌های سیستم فایل وجود دارند که می‌توانید در مستندات Node برای ماژول fs با آنها آشنا شوید.

ماژول fs همچنین writeFileSync، نسخه همزمان writeFile() را ارائه می دهد.

const fs = require("fs")
 
fs.writeFileSync("test.txt", "Newer content", { flag: "a+" }, err => {
    if (err) {
        console.log(err)
    }
});

استفاده از createWriteStream()

نقطه ضعف استفاده از writeFile() این است که شما باید تمام محتویات فایل را به یکباره ذخیره کنید که برای فایل های بزرگ مقیاس پذیر نیست. با این حال ()createWriteStream از نوشتن متوالی پشتیبانی می کند. این بدان معناست که شما می توانید هر بار یک تکه از داده ها را در یک فایل بنویسید. در اینجا سیستم کلی برای ایجاد یک جریان قابل نوشتن است.

fs.createWriteStream(path, options)

کد زیر داده ها را با استفاده از جریان ها در یک فایل متنی می نویسد

const fs = require("fs")
 
// create a writable stream
let writeableStream = fs.createWriteStream("test.txt")
 
// Write to the file using the writable stream
writeableStream.write("New content");

در اینجا مثال دیگری وجود دارد که نشان می دهد چگونه می توانید داده ها را به جریان قابل نوشتن انتقال دهید. این برنامه تا زمانی که ترمینال باز است تمام ورودی های ترمینال را به فایل test.txt می نویسد.

const fs = require("fs")
let writableStream = fs.createWriteStream("test.txt");
process.stdin.pipe(writableStream);

اگر این برنامه را از خط فرمان اجرا کنید، می توانید با Ctrl + d یا Ctrl + c از آن خارج شوید.

مطلب مرتبط:   نحوه فیلتر کردن نتایج جستجو هنگام تایپ با React

همچنین می توانید از فایل دیگری در جریان قابل نوشتن بنویسید. به مثال زیر توجه کنید:

const fs = require("fs")
let readableStream = fs.createReadStream("test.txt");
let writableStream = fs.createWriteStream("test2.txt");
 
readableStream.on("data", function(chunk) {
    writableStream.write(chunk);
});

ایجاد یک جریان قابل خواندن از فایلی که می خواهید کپی کنید به شما امکان می دهد محتویات آن را به صورت تکه ای بخوانید. بنابراین به ازای هر تکه دریافتی، برنامه در فایل مقصد می نویسد.

استفاده از appendFile()

appendFile() یک روش ساده برای افزودن محتوا به انتهای فایل است. به عنوان مثال.

const fs = require("fs")
 
fs.appendFile("test.txt", "added content", err => {
    if (err) {
        console.error(err);
    }
});

همچنین می توانید از async/wait استفاده کنید.

const fs = require("fs").promises
 
async function appendToFile() {
    try {
        await fs.appendFile("test.txt", "added content")
    } catch (err) {
        console.log(err);
    }
}
 
appendToFile()

مانند writeFile()، appendFile نیز یک نسخه همزمان دارد:

fs.appendFileSync("test.txt", "added content");

از Stream ها برای نوشتن فایل های بزرگ استفاده کنید

در این مقاله چندین روش برای نوشتن فایل در Node مورد بحث قرار گرفت. در حالی که writeFile() بسیار ساده است، اما برای اندازه های کوچک فایل مناسب تر است زیرا اجازه نوشتن متوالی را نمی دهد. اگر با فایل های حجیم سر و کار دارید، بهتر است از استریم های قابل نوشتن استفاده کنید.