Vytváření souborů a adresářů

Dokončeno

Jako vývojář ve společnosti Tailwind Traders se chystáte ponořit do praktického používání vytváření a odstraňování nových souborů a adresářů prostřednictvím kódu programu. To je běžný požadavek pro obchodní aplikace.

Zatím jste se naučili, jak pracovat se soubory a adresáři pomocí modulu fs. Modul fs můžete použít také k programovému vytváření, odstraňování, kopírování, přesouvání a další manipulaci se soubory a adresáři v systému.

Vytváření adresářů pomocí fs.mkdir

Metoda mkdir umožňuje vytváření adresářů. Následující metoda vytvoří složku s názvem newDir uvnitř složky 201.

const fs = require("fs").promises;
const path = require("path");

await fs.mkdir(path.join(__dirname, "stores", "201", "newDir"));

Struktura souborů /stores/201 již musí existovat nebo tato metoda selže. Pokud má operace vytvořit strukturu souborů, která neexistuje, můžete předat volitelný příznak recursive.

await fs.mkdir(path.join(__dirname, "newDir", "stores", "201", "newDir"), {
  recursive: true
});

Ověření existence adresářů

Pokud adresář, který se pokoušíte vytvořit, již existuje, mkdir vyvolá metoda chybu. Tato situace není dobrá, protože chyba způsobí, že se program náhle zastaví. Pokud se chcete této situaci vyhnout, Node.js doporučuje zabalit mkdir metodu do souboru try/catch nebo adresáře, pokud plánujete (stejně jako my) manipulovat se souborem nebo adresářem po jeho otevření.

const pathToCreate = path.join(__dirname, "stores", "201", "newDirectory");

// create the salesTotal directory if it doesn't exist
try {
  await fs.mkdir(salesTotalsDir);
} catch {
  console.log(`${salesTotalsDir} already exists.`);
}

Vytváření souborů pomocí fs.writeFile

Soubory můžete vytvářet pomocí metody fs.writeFile. Tato metoda přebírá cestu k souboru a data, která chcete do souboru zapsat. Pokud soubor už existuje, přepíše se.

Tento kód například vytvoří soubor s názvem greeting.txt s textem "Hello World!" uvnitř.

const pathToFile = path.join(__dirname, "greeting.txt");
await fs.writeFile(pathToFile, "Hello World!");

Pokud vynecháte poslední parametr, což jsou data, která mají být zapsána do souboru, Node.js zapíše do souboru "nedefinováno". Tato situace pravděpodobně není to, co byste kdy chtěli. Prázdný soubor zapíšete tak, že předáte prázdný řetězec. Ještě lepší možností je předat funkci String, která v podstatě dělá totéž, ale bez prázdných uvozovek v kódu.

const pathToFile = path.join(__dirname, "greeting.txt");
await fs.writeFile(pathToFile, String());

V dalším cvičení využijete své znalosti o vytváření souborů a adresářů k rozšíření programu o vytvoření adresáře, ve kterém bude uložen celkový součet všech souborů tržeb.