Curs Javascript

- Creare director nou
- Redenumire director
- Stergere director
- Modulul fs-extra

Citire continut director

Metoda fs.readdirSync(dir) poate fi folosita pentru a citi continutul unui director. Returneaza un array cu numele de fisiere si directoare din directorul specificat ("dir"), excluzand '.' si '..'.
Exemplu: functia dirCnt() din urmatorul cod returneaza un obiect cu directoarele si fisierele din directorul in care ruleaza acest cod:
//returns object with folders and files in $dir {root:'dir_path', d:[],  f:[]}
var dirCnt = (dir)=>{
  //include the fs, path modules
  var fs = require('fs');
  var path = require('path');
  var re ={root:path.resolve(dir), d:[], f:[]};

  //traverses the list with folders and files, and add them in $re
  fs.readdirSync(dir).forEach((f)=>{
    var df = path.resolve(dir, f); //set the path of the file/folder

    //check if $df is file or directory
    var stats = fs.statSync(df);
    if(stats.isFile()) re.f.push(f);
    else if(stats.isDirectory()) re.d.push(f);
  });
  return re;
};

//get the folder and files of the directory where this file is located
var df = dirCnt(__dirname);
console.log(df);
Salveaza codul de mai sus intr-un fisier numit "read_dir.js" si ruleaza fisierul in interfata command line.
Vei obtine un resultat ca in acest screenshoot:
node.js read directory

Creare director nou

Pentru a crea un director nou, poti folosi metoda fs.mkdir() sau metoda fs.mkdirSync()
Aici este un exemplu cu o functie care poate fi folosita pentru a crea un nou director:
//creates in $base the directory $dirname; Returns string message
var createDir = (base, dirname)=>{
  //include the fs, path modules
  var fs = require('fs');
  var path = require('path');
  var dir = path.resolve(base, dirname);
  var re ='The directory: '+ dir +'/ already exists';

  if(!fs.existsSync(dir)){
    fs.mkdirSync(dir, 0755);
    re = fs.existsSync(dir) ?'Successfully created: '+ dir :'Unable to create: '+ dir;
  }
  return re;
};

//creates a folder called 'newdir' in the directory where this file is located
var mkdir = createDir(__dirname, 'newdir');
console.log(mkdir);

Redenumire director

Pentru a redenumi un director cu modulul File system, se foloseste metoda fs.rename(oldPath, newPath, callback)
Exemplu: Redenumeste directorul "dir_1" (localizat in "/test") in "renamed_dir":
const fs = require('fs');
var old_d ='./test/dir_1';
var new_d ='./test/renamed_dir';

fs.rename(old_d, new_d, (err)=>{
  if(err) throw err;
  console.log('Renamed.');
});

Stergere director

Pentru a sterge un director poti folosi functia removeDir() din acest cod:
/*
Remove a Directory Asynchronously
 - dir = path to directory to delete
 - recursive = true or false;
   True - will remove recursively the entire directory;
   False - delete only the files in specified directory
 - callback = (optional) callback function; receives an argument for returned response
*/
function removeDir(dir, recursive, callback){
  const fs = require('fs');
  const path = require('path');
  var nr =0; //to call the callback only once

  function delFile(dir, file){
    return new Promise(function (resolve, reject){
      var filePath = path.join(dir, file);
      fs.lstat(filePath, function(err, stats){
        if(err) return reject(err);
        if(recursive===true && stats.isDirectory()) resolve(delDir(filePath));
        else if(stats.isFile()){
          fs.unlink(filePath, function(err){
            if(err) return reject(err);
            resolve();
          });
        }
        nr++;
        if(recursive===false && nr==1) return callback ? callback('Files deleted') :resolve();
      });
    });
  };

  function delDir(dir){
    return new Promise(function(resolve, reject){
      fs.access(dir, function(err){
        if(err) return callback ? callback(err) :reject(err);
        fs.readdir(dir, function(err, files){
          if(err) return callback ? callback(err) :reject(err);
          Promise.all(files.map(function(file){
            return delFile(dir, file);
          })).then(function(){
            if(recursive===true){
              fs.rmdir(dir, function(err){
                if(err) return callback ? callback(err) :reject(err);
                if(callback) resolve(callback('Deleted: '+dir));
                else resolve('Deleted: '+dir);
              });
            }
            else resolve();
          }).catch(reject);
        });
      });
    });
  };
  return delDir(dir);
}
- Aceasta functie: removeDir(), poate sterge recursiv tot directorul sau doar fisierele acestuia.
Exemplu de folosire:
- Sterge recursiv intregul director '.test/dirx/':
// here add the removeDir() function

removeDir('./test/dirx/', true, function(re){console.log(re);});
- Sterge doar fisierele din directorul '.test/dirx/':
// here add the removeDir() function

removeDir('./test/dirx/', false, function(re){console.log(re);});

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 nativ "fs" si adauga "promise" suport pentru metodele "fs". Poate fi folosit ca un inlocuitor pentru "fs".
- Inainte de a folosi modulul "fs-extra", trebuie 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.
Examplu:
const fs = require('fs-extra')
 
// Async with promises: 
fs.copy('/tmp/dirname/', '/dirx/dirname/')
.then(() => console.log('success!'))
.catch(err => console.error(err));
 
// Async with callbacks: 
fs.copy('/tmp/dirname/', '/dirx/dirname/', err =>{
  if (err) return console.error(err);
  console.log('success!');

// Sync: 
try {
  fs.copySync('/tmp/dirname/', '/dirx/dirname/');
  console.log('success!');
} catch (err){
  console.error(err);
}
});
- Pentru documentatie vezi modulul fs-extra.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag afiseaza textul oblic?
<strong> <pre> <em>
<p>Cursuri, Jocuri, Anime: <em>www.MarPlo.net</em></p>
Care proprietate CSS defineste spatiul dintre continutul elementului si bordura lui?
margin padding position
h3 {
  padding: 2px 0.2em;
}
Clic pe metoda ce returneaza primul element indicat de selectorii specificati.
getElementsByName() querySelector() querySelectorAll()
// preia primul Div cu class="cls", si afiseaza continutul
var elm = document.querySelector("div.cls");
alert(elm.innerHTML);
Indicati variabila PHP ce contine datele din formular trimise cu method="post".
$_SESSION $_GET $_POST
if(isset($_POST["field"])) {
  echo $_POST["field"];
}
Indicati pronumele corespunzator celui din paranteza in propozitia: "(Noi) speak english".
I They We
We speak english.
- Noi vorbim engleza.
Indicati pronumele corespunzator celui din paranteza in propozitia: "(Noi) hablamos español".
Ellos Vosotros Nosotros
Nosotros hablamos español.
- Noi vorbim spaniola.
Node.js - Lucrul cu Directoare

Last accessed pages

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (266819)
  2. Viitor simplu si continuu - Future Tense Simple and Continuous (45506)
  3. Functii predefinite si Coduri PHP (3049)
  4. Proverbe, expresii si zicatori (22945)
  5. Participiu trecut (3849)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (616)
  2. Gramatica limbii engleze - Prezentare Generala (334)
  3. Exercitii engleza - English Tests and exercises - Grammar (287)
  4. Gramatica limbii spaniole. Indrumator si prezentare generala (277)
  5. Cursuri limba engleza gratuite si lectii online (228)