Uczymy się odczytywać pliki korzystając z modułu filesystem w node.js – do dzieła!
Zakładam, że plik lorem.txt w folderze files już mamy. Tak odczytamy jego zawartość:
const fs = require("fs");
const path = require("path");
function file(filename) {
return path.join(__dirname, "files", filename);
}
var lorem = fs.createReadStream(file("lorem.txt"), {
encoding: "utf8"
});
lorem.pipe(process.stdout);
Spróbujmy zrobić to w funkcji:
const fs = require("fs");
const path = require("path");
function file(filename) {
return path.join(__dirname, "files", filename);
}
function readFile(filename){
let path = file(filename);
try{
stream = fs.createReadStream(path, {encoding: "utf8"});
stream.pipe(process.stdout);
}
catch (error){
console.log(error)
}
}
readFile("lorem.txt");
//lorem ipsum bla bla bla
Dodajmy sprawdzenie, czy taki plik istnieje:
const fs = require("fs");
const path = require("path");
function file(filename) {
return path.join(__dirname, "files", filename);
}
function readFile(filename){
let path = file(filename);
fs.exists(path, function(exists){
if(!exists){
console.log("File doesnt exist");
return;
}
try{
stream = fs.createReadStream(path, {encoding: "utf8"});
stream.pipe(process.stdout);
}
catch (error){
console.log(error)
}
});
}
readFile("lorem.txt");
// lorem ipsum bla bla bla
Teraz wywołajmy naszą funkcję na dwóch plikach, z których drugi nie istnieje:
const fs = require("fs");
const path = require("path");
function file(filename) {
return path.join(__dirname, "files", filename);
}
function readFile(filename){
let path = file(filename);
fs.exists(path, function(exists){
if(!exists){
console.log("File doesnt exist");
return;
}
try{
stream = fs.createReadStream(path, {encoding: "utf8"});
stream.pipe(process.stdout);
}
catch (error){
console.log(error)
}
});
}
readFile("lorem.txt");
readFile("lorem2.txt");
// File doesnt exist
// lorem ipsum bla bla bla
Warto zwrócić uwagę na asynchroniczność kodu – najpierw dostajemy efekt drugiego wywołania, bo samo exists jest asynchroniczne i widząc, że lorem2.txt nie istnieje szybciej się wywołuje.