Podręcznik
Operacje na plikach w Node.js
Tworzenie folderów
Do synchronicznego tworzenia folderów służy funkcja mkdirSync z modułu fs:
const fs = require('fs');
const path = require('path');
// Ścieżka folderu, który chcemy stworzyć:
var dirPath = path.join(__dirname, "new_dir");
try {
fs.mkdirSync(dirPath);
}
catch(err) {
// Folderu nie udało się stworzyć
// (np. dlatego, że już wcześniej istniał)
console.error(err);
}
const path = require('path');
// Ścieżka folderu, który chcemy stworzyć:
var dirPath = path.join(__dirname, "new_dir");
try {
fs.mkdirSync(dirPath);
}
catch(err) {
// Folderu nie udało się stworzyć
// (np. dlatego, że już wcześniej istniał)
console.error(err);
}
Do asynchronicznego tworzenia folderów można używać funkcji mkdir z API promises modułu fs:
const fsPromises = require('fs').promises;
const path = require('path');
// Ścieżka folderu, który chcemy stworzyć:
var dirPath = path.join(__dirname, "new_dir");
fsPromises.mkdir(dirPath).then(() => {
console.log(`Folder ${dirPath} został stworzony.`);
}).catch(rejectionReason => {
// Folderu nie udało się stworzyć
// (np. dlatego, że już wcześniej istniał)
console.error(rejectionReason);
});
const path = require('path');
// Ścieżka folderu, który chcemy stworzyć:
var dirPath = path.join(__dirname, "new_dir");
fsPromises.mkdir(dirPath).then(() => {
console.log(`Folder ${dirPath} został stworzony.`);
}).catch(rejectionReason => {
// Folderu nie udało się stworzyć
// (np. dlatego, że już wcześniej istniał)
console.error(rejectionReason);
});
Sprawdzanie, czy dany folder istnieje
Do synchronicznego sprawdzenia, czy folder o zadanej ścieżce istnieje, służy funkcja existsSync modułu fs:
if (fs.existsSync(dirPath)) {
console.log(`Folder ${dirPath} istnieje.`);
}
console.log(`Folder ${dirPath} istnieje.`);
}
Do asynchronicznego sprawdzenia, czy folder o zadanej ścieżce istnieje, można wykorzystać funkcję access z API promises modułu fs. Jeśli folder nie istnieje, obietnica access zostanie odrzucona:
try {
await fsPromises.access(dirPath);
} catch {
console.log(`Folder ${dirPath} nie istnieje.`);
}
await fsPromises.access(dirPath);
} catch {
console.log(`Folder ${dirPath} nie istnieje.`);
}
Przykładowy program, w którym chcielibyśmy asynchronicznie:
- określić ścieżkę folderu, w którym zamierzamy przechowywać pliki,
- sprawdzić, czy ten folder istnieje,
- jeśli nie istnieje – stworzyć go,
- kontynuować pracę z plikami, korzystając z tego folderu,
mógłby wyglądać następująco:
const fsPromises = require('fs').promises;
const path = require('path');
// Nazwa folderu z plikami:
var filesDirName = "files";
// Cała ścieżka folderu z plikami:
var filesDirPath = path.join(__dirname, filesDirName);
async function main() {
// Sprawdzenie, czy folder "files" istnieje:
try {
await fsPromises.access(filesDirPath);
} catch {
// Folder "files" nie istnieje, więc go stwórzmy:
await fsPromises.mkdir(filesDirPath);
}
// ... dalsze operacje, wykorzystujące folder "files"
}
main()
const path = require('path');
// Nazwa folderu z plikami:
var filesDirName = "files";
// Cała ścieżka folderu z plikami:
var filesDirPath = path.join(__dirname, filesDirName);
async function main() {
// Sprawdzenie, czy folder "files" istnieje:
try {
await fsPromises.access(filesDirPath);
} catch {
// Folder "files" nie istnieje, więc go stwórzmy:
await fsPromises.mkdir(filesDirPath);
}
// ... dalsze operacje, wykorzystujące folder "files"
}
main()