-
Obtine informatii despre fisiere
-
Creare si adaugare date in fisier
-
Redenumire fisier
-
Stergere fisier
-
Modulul fs-extra
Modulul Node.js
File System (
fs) permite sa lucrezi cu fisiere si directoare pe server.
Se foloseste acest cod pentru a include modulul "fs":
const fs = require('fs');
Citire fisier
Pentru a citi un fisier de pe server, poti folosi metoda
fs.readFile().
Exemplu: Presupunem ca avem urmatorul fisier HTML, numit "file1.htm" (localizat intr-un folder "test/" in directorul Node.js):
<html>
<body>
<h1>H1 Title Header</h1>
<p>Some text content.</p>
</body>
</html>
Creaza un fisier Node.js care citeste fisierul HTML si returneaza continutul:
//include http and fs modules
const http = require('http');
const fs = require('fs');
//path and file name to read
let file ='./test/file1.htm';
//sets server
const server = http.createServer((req, res)=>{
//reads the file; if no error, output its content
fs.readFile(file, (err, data)=>{
if(err) throw err;
else {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
}
res.end();
});
});
//listens the server on port 8080
server.listen(8080, ()=> {
console.log('Server running at //localhost:8080/');
});
Salveaza codul de mai sus intr-un fisier numit "readfile1.js" si initiaza fisierul in interfata command line. Apoi, acceseaza serverul in browserul tau: "//localhost:8080/".
- In browser va aparea o pagina cu continutul fisierului "file1.htm".
Obtine informatii despre fisiere
Pentru a obtine informatii despre un fisier, se foloseste metoda
fs.stat().
Exemplu: Obtine un obiect cu informatii despre "file1.htm":
const fs = require('fs');
var file ='./test/file1.htm';
fs.stat(file, (err, stats)=>{
if(err) throw err;
console.log(stats);
// Check file type
console.log('isFile ? '+ stats.isFile());
});
Daca salvezi codul de mai sus intr-un fisier Node.js, de exemplu "fileinfo.js" si rulezi fisierul in interfata command line, vei obtine un rezultat ca si in urmatorul screenshot:
- Parametrul
stats al functiei callback este un obiect cu informatii despre fisier (mod, marime, etc.); de asemenea, are metode care pot fi folosite pentru a verifica tipul de fisier.
stats.isFile() - Returneaza true daca este un fisier.
stats.isDirectory() - Returneaza true daca este un director.
stats.isBlockDevice() - Returneaza true daca tipul de fisier este block device.
Creare si adaugare date in fisier
Modulul "fs" are metode pentru a crea noi fisiere sau pentru a adauga date intr-un fisier existent:
- fs.appendFile()
- fs.open()
- fs.writeFile()
1. Daca fisierul specificat exista, metoda
fs.appendFile() adauga continutul specificat in acel fisier. Daca fisierul nu exista, fisierul va fi creat.
- Exemplu: Creaza un fisier html folosind metoda appendFile():
const fs = require('fs');
var file ='./test/newfile.htm';
var content ='<div>Html content</div>';
fs.appendFile(file, content, (err)=>{
if(err) throw err;
console.log('Saved.');
});
Daca salvezi codul de mai sus intr-un fisier Node.js si apoi il initiezi in interfata command line, un nou fisier "newfile.htm" va fi creat in directorul "test/" (localizat in acelasi director ca si aplicatia Node.js).
2. Metoda
fs.open() ia un "flag" ca si al doilea argument, daca flag-ul este "w" pentru "writing" (scriere), fisierul specificat este deschis pentru scriere. Daca fisierul nu exista, un fisier gol este creat.
- Metoda fs.open() poate fi folosita pentru a crea, citi, scrie un fisier, in functie de flag-ul specificat (r, r+, a, w, w+, etc.). Vezi pagina
Documentatie fs.open().
- Exemplu: Creaza un fisier html folosing metoda fs.open() si adauga continut in fisierul deschis folosind metoda
fs.write():
const fs = require('fs');
var file ='./test/newfile.htm';
var content ='<div>Html content</div>';
fs.open(file, 'w', (err, fd)=>{
if(err) throw err;
else {
console.log('File created');
fs.write(fd, content, (err)=>{
if(err) throw err;
console.log('Data added in file');
fs.close(fd, (err)=>{ if(err) throw err;});
});
}
});
3. Metoda
fs.writeFile() inlocuieste fisierul specificat si continutul daca exista. Daca fisierul nu exista, un nou fisier va fi creat care va contine continutul specificat.
- Exemplu: Creaza un nou fisier folosind metoda writeFile():
const fs = require('fs');
var file ='./test/newfile.htm';
var content ='<div>Html content</div>';
fs.writeFile(file, content, (err)=>{
if(err) throw err;
console.log('Saved.');
});
Redenumire fisier
Pentru a redenumi un fisier cu modulul File System, se foloseste metoda
fs.rename().
Exemplu: Redenumeste "newfile.htm" in "renamedfile.htm":
const fs = require('fs');
var file ='./test/newfile.htm';
var newname ='./test/renamedfile.htm';
fs.rename(file, newname, (err)=>{
if(err) throw err;
else console.log('Renamed.');
});
Stergere fisier
Pentru a sterge un fisier cu modulul File System, se foloseste metoda
fs.unlink().
Exemplu: Sterge "filename.htm" din directorul "test/":
const fs = require('fs');
var file ='./test/filename.htm';
fs.unlink(file, (err)=>{
if(err) throw err;
else console.log('Deleted.');
});
Modulul fs-extra
O alta optiune pentru a lucra cu usurinta cu directoare si fisiere pe server este modulul
fs-extra.
fs-extra adauga metode file system care nu sunt incluse in modulul de baza "fs" si adauga suport pt. "promises" la metodele "fs". E un bun inlocuitor pt. "fs".
- Inainte de a folosi modulul "fs-extra", va trebui sa il instalezi. Pentru a instala "fs-extra", ruleaza acest cod in interfata command line:
npm install --save fs-extra
Apoi, poti folosi modulul fs-extra in proiectele tale Node.js, ca un inlocuitor pentru nativul "fs".
const fs = require('fs-extra');
Toate metodele din fs sunt atasate si la fs-extra. Toate metodele "fs" returneaza "promises" daca nu e transmisa o functie callback.
Exemplu:
const fs = require('fs-extra')
// Async with promises:
fs.copy('/tmp/file.htm', '/tmp/dirx/file.htm')
.then(() => console.log('success!'))
.catch(err => console.error(err));
// Async with callbacks:
fs.copy('/tmp/file.htm', '/tmp/dirx/file.htm', err =>{
if (err) return console.error(err);
console.log('success!');
});
// Sync:
try {
fs.copySync('/tmp/file.htm', '/tmp/dirx/file.htm');
console.log('success!');
} catch (err){
console.error(err);
}
- Pentru documentatie vezi
fs-extra module page.