Curs Javascript

- 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
Ce tip de <input> creaza o paleta de culori pentru selectare culoare?
type="text" type="color" type="date"
<input type="color" name="get_color" />
Care metoda CSS roteste elementul HTML la un anumit numar de grade?
scale() translate() rotate()
#some_id:hover {
  transform: rotate(60deg);
  -ms-transform: rotate(60deg);    /* IE 9 */
  -moz-transform: rotate(60deg);   /* Firefox */
}
Click pe functia care returneaza numarul cel mai mare.
pow() min() max()
var maxn = Math.max(8, 4, 88, 56);
alert(maxn);      // 88
Ce functie previne ca un fisier sa fie inclus mai mult de o data intr-o pagina?
include() include_once() require()
include_once("un_fisier.php");
Care este traducerea corecta pentru: "Ahead of time"?
Peste timp La timp Inainte de vreme
Most people arrived ahead of time.
- Cei mai multi oameni au sosit inainte de vreme (prea devreme).
Indicati traducerea corecta a cuvantului "buenĂ­simo"
mai bun mai putin bun extrem de bun
Este fruto es buenĂ­simo.
- Acest fruct este extrem /nemaipomenit de bun.
Node.js Lucru cu Fisiere

Last accessed pages

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (276915)
  2. Verbe frazale din limba Engleza (40616)
  3. Verbe modale - Modal verbs - CAN, COULD, MAY, MIGHT, MUST (67760)
  4. Caractere speciale - Entitati HTML (14360)
  5. Liste HTML - UL, OL (11158)

Popular pages this month

  1. Curs HTML gratuit Tutoriale HTML5 (474)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (413)
  3. Coduri pt culori (270)
  4. Formatare text in pagina html (157)
  5. Creare si editare pagini HTML (155)