Модуль fs

Подключение

var fs = require('fs');

Методы модуля fs

fs.readdir(path, function(err, files)) — возвращает массив папок и файлов, содержащихся в дирректории (асинхронный)
fs.stat(path, function(err, state)) — возвращает объект fs.Stats, содержащий информацию о файле (асинхронный)

Методы объекта fs.Stats

isFile()
isDirectory()
isBlockDevice()
isCharacterDevice()
isSymbolicLink()
isFIFO()
isSocket()

Чтение файла

fs.readFileSync("file.txt", "utf8")
fs.readFile("file.txt", "utf8", function(error,data){ })

Запись файла

Перезапись

fs.writeFileSync("file.txt", "Hello, world!")
fs.writeFile("file.txt", "Hello, world!")
fs.writeFile("file.txt", "Hello, world!", function(error){ })

Дозапись

fs.appendFileSync("file.txt", "Hello, world!");
fs.appendFile("file.txt", "Hello, world!", function(error){
var data = fs.readFileSync("file.txt", "utf8");
console.log(data);
});

Рекурсивный обход директорий

Асинхронный

var fs = require('fs');
var base = "C:/";

function readDir(base){

  fs.readdir(base, function(err, files){

    files.forEach(function(item){
      fs.stat(base + '/' + item, function(err, state){
        if(state.isDirectory()){
          console.log(item);
          localBase = base + '/' + item;
          readDir(localBase);
        }else{
          console.log("      " + item);
        }
      });
    });

  });

}

readDir(base);

Синхронный

var fs = require('fs');
var base = "C:/Users/korneeva.m/Desktop/xxx";

String.prototype.repeat = function(num){
  return new Array(num + 1).join(this);
}

function readDir(base, level){
  files = fs.readdirSync(base);
  files.forEach(function(item){
    state = fs.statSync(base + '/' + item);
    if(state.isDirectory()){
      console.log("\n"+" ".repeat(level*2) + item+'\n');
      localBase = base + '/' + item;
      readDir(localBase, level+1);
    }else{
      console.log(" ".repeat(level*2) + item);
    }
  });
}
readDir(base,0);

0 комментариев

Оставить комментарий

*Доступные HTML-теги: a, abbr, blockquote, code, pre, del, i, em, strong, b, strike
*Не будет опубликован