Uczymy się usuwać pliki w Node.js używając modułu filesystem oraz fs promises. Do dzieła.
Usuniemy plik clearme.txt:
const fs = require("fs");
const path = require("path");
function file(filename) {
return path.join(__dirname, "files", filename);
}
let fpath = file("clearme.txt");
fs.unlink(fpath, (err) => {
if (err) {
if(err.code === "ENOENT") {
console.log("File already doesnt exist");
return;
}
console.log(`Failed to delete. Reason: ${err.message}.`);
throw err;
} else {
console.log('File is deleted.');
}
});
Teraz to samo z modułem fs.promises:
const fs = require('fs').promises;
const path = require("path");
function file(filename) {
return path.join(__dirname, "files", filename);
}
let fpath = file("clearme.txt");
async function deleteFile(filePath) {
try {
await fs.unlink(filePath);
console.log(`File ${filePath} has been deleted.`);
} catch (err) {
console.error(err);
}
}
deleteFile(fpath);
Oczywiście nikt nie każe nam używać składni async/await, 'then’ czasami wręcz wygląda nawet czytelniej:
const fs = require('fs').promises;
const path = require("path");
function file(filename) {
return path.join(__dirname, "files", filename);
}
let fpath = file("clearme.txt");
fs.unlink(fpath)
.then(() => console.log("File deleted"))
.catch((err) => console.log(err.message));
Funkcja unlink zwraca tutaj undefined, ale jest obiektem thenable, który dopiero jak zakończy swoją operację z sukcesem wykonuje blok then.