eFusion 21 сСнтября 2020

πŸ—„οΈ 4 Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Node.js

Π’ Node.js ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнного модуля fs, содСрТащСго Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для чтСния, записи, удалСния ΠΈ пСрСмСщСния Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° сСрвСрС. Рассмотрим эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² дСйствии.
πŸ—„οΈ 4 Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Node.js

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ инструкции ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас ΡƒΠΆΠ΅ установлСн Node.js. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ промисы с синтаксисом async/await .

Π¨Π°Π³ 1. Π§ΠΈΡ‚Π°Π΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ readFile()

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΌΡ‹ сначала ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ fs – стандартный Node.js ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ readFile() – ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌ Ρ„Π°ΠΉΠ», сохраним содСрТимоС Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² консоль.

НачнСм с настройки срСды. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠ°ΠΏΠΊΡƒ node-files для хранСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

        mkdir node-files
cd node-files
    

Π’ этой ΠΏΠ°ΠΏΠΊΠ΅ создадим тСкстовый Ρ„Π°ΠΉΠ» greetings.txt для тСстирования Ρ€Π°Π±ΠΎΡ‚Ρ‹ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

        echo "hello, hola, bonjour, hallo" > greetings.txt
    

Команда echo Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ строковый Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Π° символ > пСрСнаправляСт Π²Ρ‹Π²ΠΎΠ΄ Π² Ρ„Π°ΠΉΠ» greetings.txt.

CΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Ρ„Π°ΠΉΠ» readFile.js. НапримСр, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ nano:

        nano readFile.js
    

НачнСм с ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ модуля fs:

        const fs = require('fs').promises;
    

Когда ΠΌΠΎΠ΄ΡƒΠ»ΡŒ fs Ρ‚ΠΎΠ»ΡŒΠΊΠΎ создавался, основным способом написания асинхронного ΠΊΠΎΠ΄Π° Π² Node.js Π±Ρ‹Π»ΠΈ коллбэки. Но ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста популярности промисов, ΠΊΠΎΠΌΠ°Π½Π΄Π° Node.js ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Π»Π° ΠΈ Π½Π°Π΄ ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ fs.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для чтСния Ρ„Π°ΠΉΠ»Π°. Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова async. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ промисы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ await, вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ промис с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .then().

        const fs = require('fs').promises;

async function readFile(filePath) {
  try {
    const data = await fs.readFile(filePath);
    console.log(data.toString());
  } catch (error) {
    console.error(`Got an error trying to read the file: ${error.message}`);
  }
}
    

Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΠΎΠ²ΠΈΡ‚ΡŒ ошибки асинхронного чтСния Ρ„Π°ΠΉΠ»ΠΎΠ², Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ² fs.readFile() Π² Π±Π»ΠΎΠΊ try...catch.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ fs.readFile() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ любого Ρ‚ΠΈΠΏΠ°. Когда ТурналируСтся содСрТимоС Ρ„Π°ΠΉΠ»Π°, всС Π±Π°ΠΉΡ‚Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² тСкст с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° toString().

Если ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ошибка (Ссли Ρ„Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ ΠΏΡ€Π°Π² Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅), Π² консоль вывСдСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС.

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ лишь Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

        const fs = require('fs').promises;

async function readFile(filePath) {
  try {
    const data = await fs.readFile(filePath);
    console.log(data.toString());
  } catch (error) {
    console.error(`Got an error trying to read the file: ${error.message}`);
  }
}

readFile('greetings.txt');
    

БохраняСм Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. ЗапускаСм скрипт:

        node readFile.js
    

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

        hello, hola, bonjour, hallo
    

Π¨Π°Π³ 2. Π—Π°ΠΏΠΈΡΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ writeFile()

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» writeFile.js:

        nano writeFile.js
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ напишСм Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: пСрвая Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ CSV-Ρ„Π°ΠΉΠ», Π° вторая – Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅.

Вставим Π² Ρ„Π°ΠΉΠ» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

        const fs = require('fs').promises;

async function openFile() {
  try {
    const csvHeaders = 'name,quantity,price'
    await fs.writeFile('groceries.csv', csvHeaders);
  } catch (error) {
    console.error(`Got an error trying to write to a file: ${error.message}`);
  }
}
    

Π‘Π½Π°Ρ‡Π°Π»Π° функция openFile() создаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ csvHeaders, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ столбцов CSV-Ρ„Π°ΠΉΠ»Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ fs.writeFile() для создания Ρ„Π°ΠΉΠ»Π° ΠΈ записи Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ – ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя, Node.js создаст Ρ„Π°ΠΉΠ» Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ выполняСм ΠΊΠΎΠ΄. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ – записываСмыС Π΄Π°Π½Π½Ρ‹Π΅. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для добавлСния Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°:

        const fs = require('fs').promises;

async function openFile() {
  try {
    const csvHeaders = 'name,quantity,price'
    await fs.writeFile('groceries.csv', csvHeaders);
  } catch (error) {
    console.error(`Got an error trying to write to a file: ${error.message}`);
  }
}

async function addGroceryItem(name, quantity, price) {
  try {
    const csvLine = `\n${name},${quantity},${price}`
    await fs.writeFile('groceries.csv', csvLine, { flag: 'a' });
  } catch (error) {
    console.error(`Got an error trying to write to a file: ${error.message}`);
  }
}
    

Асинхронная функция addGroceryItem() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Ρ€ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°, сумму ΠΈ Ρ†Π΅Π½Ρƒ Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. Π­Ρ‚ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ с ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΌ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ синтаксисом для формирования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ csvLine, записываСмой Π² Ρ„Π°ΠΉΠ».

Π—Π°Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ openFile(), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ writeFile(), Π½ΠΎ Π½Π° этот Ρ€Π°Π· Π΅ΡΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ JavaScript c ΠΊΠ»ΡŽΡ‡ΠΎΠΌ flag ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 'a' . Π’Π°ΠΊ ΠΌΡ‹ сообщаСм Node.js, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ„Π»Π°Π³ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'w', ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ создаСтся Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Ссли ΠΎΠ½ Π½Π΅ сущСствуСт, ΠΈΠ½Π°Ρ‡Π΅ Ρ„Π°ΠΉΠ» пСрСзаписываСтся. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ„Π»Π°Π³Π°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Node.js.

Для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ скрипта Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

        (async function () {
  await openFile();
  await addGroceryItem('eggs', 12, 1.50);
  await addGroceryItem('nutella', 1, 4);
})();
    

ЗапускаСм ΠΊΠΎΠ΄:

        node writeFile.js
    

Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ создан Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» groceries.csv.

        cat groceries.csv
    

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π° groceries.csv ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

        name,quantity,price
eggs,12,1.5
nutella,1,4
    

Π’Ρ‹Π·ΠΎΠ² openFile() создал Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ столбцов. ΠŸΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ addGroceryItem() Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π΄Π²Π΅ строки с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π¨Π°Π³ 3. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ unlink()

На этом шагС ΠΌΡ‹ научимся ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ unlink() модуля fs ΠΈ напишСм Node.js скрипт для удалСния groceries.csv, созданного Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ шагС. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» deleteFile.js:

        nano deleteFile.js
    

НапишСм Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ΄, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ deleteFile(), которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fs.unlink(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π° ΡƒΠ΄Π°Π»ΠΈΠ»Π° Ρ„Π°ΠΉΠ» ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы:

        const fs = require('fs').promises;

async function deleteFile(filePath) {
  try {
    await fs.unlink(filePath);
    console.log(`Deleted ${filePath}`);
  } catch (error) {
    console.error(`Got an error trying to delete the file: ${error.message}`);
  }
}

deleteFile('groceries.csv');
    
ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅
Когда Π²Ρ‹ удаляСтС Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ unlink(), ΠΎΠ½ Π½Π΅ отправляСтся Π² recycle.bin ΠΈΠ»ΠΈ ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ, Π° навсСгда удаляСтся ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π­Ρ‚ΠΎ дСйствиС Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ.

БохраняСм Ρ„Π°ΠΉΠ» ΠΈ запускаСм ΠΊΠΎΠ΄:

        node deleteFile.js
    

На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

        Deleted groceries.csv
    

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Π° большС Π½Π΅Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ls:

        ls
deleteFile.js   greetings.txt   readFile.js     writeFile.js
    

Π¨Π°Π³ 4. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ rename()

НапослСдок рассмотрим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ пСрСмСщСния. ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ, создадим ΠΏΠ°ΠΏΠΊΡƒ test-data, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»:

        mkdir test-data
    

Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ»:

        cp greetings.txt greetings-2.txt
    

ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ для рСдактирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»:

        nano moveFile.js
    

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ moveFile(), Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ rename(). Π’ Π½Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΌΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ исходного ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ².

        const fs = require('fs').promises;

async function moveFile(source, destination) {
  try {
    await fs.rename(source, destination);
    console.log(`Moved file from ${source} to ${destination}`);
  } catch (error) {
    console.error(`Got an error trying to move the file: ${error.message}`);
  }
}

moveFile('greetings-2.txt', 'test-data/salutations.txt');
    

Ѐункция rename() ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ Ρ‚ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΊΠ°ΠΊ Π² нашСм ΠΊΠΎΠ΄Π΅.

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΠΌ ΠΈ запустим ΠΊΠΎΠ΄:

        node moveFile.js
    

Π’ ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

        Moved file from greetings-2.txt to test-data/salutations.txt
    

ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠΌ успСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

        ls
deleteFile.js   greetings.txt   moveFile.js     readFile.js     test-data       writeFile.js
    

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠœΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ управлСния Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Node.js. Π‘Π½Π°Ρ‡Π°Π»Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ содСрТимоС Ρ„Π°ΠΉΠ»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ readFile(). Π—Π°Ρ‚Π΅ΠΌ создали Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ writeFile(), ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» с unlink(), Π° Π·Π°Ρ‚Π΅ΠΌ пСрСмСстили ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π»ΠΈ Ρ„Π°ΠΉΠ» посрСдством rename().

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ модуля fs Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ использованиС Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Node.js. ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ Node.js:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ

Π‘Ρ‹Π»Π° Π»ΠΈ ΡΡ‚Π°Ρ‚ΡŒΡ для вас ΠΏΠΎΠ»Π΅Π·Π½Π°? Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ Π²Π°ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π° Node.js?

Π’ΠΠšΠΠΠ‘Π˜Π˜

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ вакансию
Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ C++
Москва, ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Π°ΠΌ собСсСдования

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•