- 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:
node.js File info
- 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: 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.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care meta tag se foloseste pentru scurta descriere a paginii?
<meta content="..."> <meta description="..."> <meta http-equiv="...">
<meta name="description" content="70-160 caractere ce descriu continutul paginii" />
Ce proprietate CSS opreste efectul dat de "float"?
clear text-align position
#some_id {
  clear: both;
}
Clic pe metoda ce creaza un array cu toate elementele din pagina cu un anumit nume de tag.
getElementsByName() getElementById() getElementsByTagName()
var divs = document.getElementsByTagName("div");
var nr_divs = divs.length;
alert(nr_divs);
Indicati functia PHP ce returneaza numarul de elemente dintr-un array.
is_[) count() strlen()
$arr =[7, 8, "abc", 10);
$nri = count($arr);
echo $nri;        // 4
Indicati adverbul corespunzator adjectivului din paranteza in propozitia: "I live (happy)".
happly happily hapily
I live happily.
- Traiesc fericit (in mod fericit).
Indicati adverbul corespunzator adjectivului din paranteza in propozitia: "Vivo (feliz)".
felizamente felizmente felices
Vivo felizmente.
- Traiesc fericit (cu fericire).
Node.js Lucru cu Fisiere

Last accessed pages

  1. Alphabet and Pronunciation - Alfabetul si pronuntia in limba engleza (22066)
  2. Gramatica limbii engleze - Prezentare Generala (72291)
  3. Prepozitii - Prepositions (7819)
  4. HTML5 - Elemente si atribute noi in formular (1341)
  5. HTML5 - Tag-uri Noi (1020)

Popular pages this month

  1. Gramatica limbii engleze - Prezentare Generala (2613)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1259)
  3. Prezentul simplu si continuu - Present Tense Simple and Continuous (827)
  4. Gramatica limbii spaniole. Indrumator si prezentare generala (807)
  5. Alphabet and Pronunciation - Alfabetul si pronuntia in limba engleza (744)