标签归档:node教程

Node.js 文件系统 目录操作相关知识简介说明(二)


摘要:
Node.js通过fs模块提供类似于linux的文件操作API,
下文举例讲述node.js操作目录的API
如下所示:



node.js创建目录

node.js创建目录如下:

fs.mkdir(path[, options], callback)
—–参数说明———-
path:目录所处的路径位置

options:可选参数
recursive:是否已递归的方式依次创建目录缺失的路径,缺省值为false
mode:目录权限,缺省值为0777

callback:目录创建成功后的回调函数

例:
Node.js创建目录

          var fs = require("fs");
	  //在当前目录下创建test文件夹
	   console.log("create dir test");
	  fs.mkdir("test",function(err){
	  if (err) {
	    return console.error(err);
	   }
	   console.log("dir create success!");
          });
      


node.js读取目录

node.js读取目录语法如下:

fs.readdir(path, callback)
—-参数说明—–
path:待读取路径说明

callback:目录读取完毕后的回调函数
回调函数会同时传入两个函数:
1.err
错误信息
2.files
指定path下的文件数组列表

例:
node.js读取目录

	     var fs = require("fs");

	      console.log("see test dir");
           
	    fs.readdir("test/",function(err, files){
              if (err) {
                 return console.error(err);
                }
           files.forEach( function (file){
               console.log( file );
             });
           });

	  


node.js 删除目录

node.js 删除目录语法如下:
fs.rmdir(path, callback)
———参数说明——–
path:
待删除目录的路径

callback:
删除目录操作完毕后,回调函数

例:

    var fs = require("fs");

    console.log("del 'test' dir");

    fs.rmdir("test",function(err){
       if (err) {
         return console.error(err);
      }
   
     });
  


删除目录注意事项:
避免目录中存在文件

相关阅读:
node.js文件操作相关API

Node.js 文件系统相关知识简介说明(一)


摘要:
Node.js通过fs模块提供类似于linux的文件操作API,如下所示:



异步与同步

在Node.js开发语言中,如需使用文件系统,需引用fs模块,此模块中有同步和异步读取文件
在异步读取文件的方法中,提供一个回调函数,异步方法不会对程序产生阻塞

例:
同步和异步读取文件的方法分享

   
    //1 新建文件fileReadTmp.txt 输入以下文件
     node.js教程网:www.maomao365.com

    //2新建fileRead.js 输入以下脚本

     var fs = require("fs");

     //异步读取
     fs.readFile('fileReadTmp.txt', function (err, data) {
        if (err) {
          return console.error(err);
       }
         console.log("read1: " + data.toString());
     });

     //同步读取
     
      var data = fs.readFileSync('fileReadTmp.txt');
      
       console.log("read2: " + data.toString());

 


node.js打开文件方法分享

node.js打开文件采用open方法,语法如下:
fs.open(path,[,mode],callback)
—参数说明—-
path:待读取文件路径
mode:文件打开模式,缺省值为可读可写
callback:文件打开后的回调函数

mode参数说明:

mode

说明
r

使用读取模式打开文件。当文件不存在抛出异常。
r+

使用读写模式打开文件。当文件不存在抛出异常。
rs

使用同步的方式读取文件。
rs+

使用同步的方式读取和写入文件。
w

使用写入模式打开文件,当文件不存在则创建。
wx

类似 ‘w’,当文件路径存在,则文件写入失败。
w+

使用读写模式打开文件,当文件不存在则创建。
wx+

类似 ‘w+’, 当文件路径存在,则文件读写失败。
a

使用追加模式打开文件,当文件不存在则创建。
ax

类似 ‘a’, 当文件路径存在,则文件追加失败。
a+

使用读取追加模式打开文件,当文件不存在则创建。
ax+

类似 ‘a+’, 当文件路径存在,则文件读取追加失败。

例:
使用读写模式打开指定文件


   var fs = require("fs");

   //异步打开文件
  
   console.log("open file start");
   
   fs.open('fileReadTmp.txt', 'r+', function(err, fd) {
      if (err) {
         return console.error(err);
      }
      console.log("success!");     
   });



node.js获取文件相关信息的方法分享

stat函数是node.js中获取文件信息的函数,如下所示:
fs.stat(path,callback)
———-参数说明——
path:
文件路径
callback:
回调函数,回调函数包括(err和stats两个对象)

例:


    var fs = require('fs');
 
     fs.stat('fileReadTmp.txt', function (err, stats) {
          console.log(stats.isFile());         
     })


stats类中的方法有:

方法

说明
stats.isFile()

当前路径所指向为文件时返回 true,否则返回 false
stats.isDirectory()

当前路径所指向为目录时返回 true,否则返回 false
stats.isBlockDevice()

当前路径所指向为块设备时返回 true,否则返回 false
stats.isCharacterDevice()

当前路径所指向为字符设备时返回 true,否则返回 false
stats.isSymbolicLink()

当前路径所指向为软链接时返回 true,否则返回 false
stats.isFIFO()

如果为FIFO,返回true,否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道
stats.isSocket()

如果此路径是一个Socket 返回 true,否则返回 false


 var fs = require("fs");

console.log("open file");
fs.stat('fileReadTmp.txt', function (err, stats) {
   if (err) {
       return console.error(err);
   }
   console.log(stats);
   console.log("get file information success");
   
   // 检测文件类型
   console.log("is File ? " + stats.isFile()); 
});



node.js 写入文件

写入文件语法
fs.writeFile(file, data[, options], callback)
—-参数说明————
file:待写入文件名或文件描述符
data:待写入数据,可为字符串和缓冲对象
options:写入属性为为一个json对象,包含{encoding,mode,flag},缺省值为utf-8 flag 为w
callback:写入成功后的回调函数

例:

  var fs = require("fs");

console.log("write file start");
fs.writeFile('fileReadTemp.txt', 'Node.js write',{ 'encoding': 'utf-8' },  function(err) {
   if (err) {
       return console.error(err);
   }
   console.log("write success"); 
   console.log("read file");
   fs.readFile('fileReadTemp.txt', function (err, data) {
      if (err) {
         return console.error(err);
      }
      console.log("file content: " + data.toString());
   });
});


node.js 读取文件

node.js读取文件语法如下:
fs.read(fd, buffer, offset, length, position, callback)
fs.read为异步读取文件的方法
——-参数说明—-
fd:为fs.open返回的文件描述符
buffer:数据写入的缓冲区
offset:数据缓冲区写入的偏移量
length:文件中读取的字节数
position:文件读取的起始位置
callback:文件读取成功的回调函数
例:

    var fs = require("fs");
    var buf = new Buffer.alloc(1024);
 
     console.log("open file");

    fs.open('fileReadTmp.txt', 'r+', function(err, fd) {
       if (err) {
       return console.error(err);
      }
   console.log("open file success");
   console.log("read file:");
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }
      console.log(bytes + "  byte readed.");
    
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }
   });
});



node.js 关闭文件

node.js关闭文件语法说明:
fs.close(fd,callback);
——-参数说明——–
fd:
文件打开后的文件描述符
callback:
文件关闭后的回调函数

例:

   var fs = require("fs");
var buf = new Buffer.alloc(1024);

console.log("open file");
fs.open('fileReadTmp.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
   console.log("open file success");
   console.log("read file:");
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }
      console.log(bytes + "  byte readed.");
    
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }



      //关闭文件
      fs.close(fd,function(err){
           if(err){}
            console.log('close file success!');
       });
     



   });
});



node.js 文件截取

下文讲述文件截取方法,如下所示
node.js文件截取语法:
fs.ftruncate(fd, len, callback)
——–参数说明——-
fd:文件被打开后的文件描述符
len:文件内容截取长度
callback:截取操作完毕后的回调函数
例:

   var fs = require("fs");
var buf = new Buffer.alloc(1024);

console.log("open file");
fs.open('fileReadTmp.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
    
   fs.ftruncate(fd,10,function(err){});

   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }
      console.log(bytes + "  byte readed.");
    
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }

      fs.close(fd,function(err){
           if(err){}
            console.log('close file success!');
       });
     
   });
});
 


node.js 删除文件

node.js删除文件语法
fs.unlink(path, callback)
—-参数说明—-
path:文件路径
callback:回调函数
例:

    var fs = require("fs");
 
    fs.unlink('fileReadTemp.txt', function(err) {
        if (err) {
            return console.error(err);
        }
       console.log("del success");
    });
 

Node.js 常用工具类util举例说明


摘要:
下文讲述node.js中常用工具类util简介说明,如下所示:



util类简介说明

util类是node.js中的核心功能模块,提供众多常用函数集合,如下所示:


1.util.inherits函数说明

util.inherits(constructor, superConstructor)用于实现对象之间的原型继承的函数。
—-参数说明—–
constructor:子对象—(子对象继承父级对象)
superConstructor:父级对象


例:
util.inherits对象间的原型继承

       //1 引入util模块     
      var util = require('util'); 
         
       //定义Base函数
       function Base() { 
           this.name = 'functionName'; 
           this.base = 0000; 
           this.test = function() { 
           console.log('test:' + this.name); 
           };
         } 

 
Base.prototype.printName = function() { 
    console.log(this.name);
}; 

function Sub() { 
    this.name = 'sub Name'; 
} 

util.inherits(Sub, Base);  //将Sub继承Base对象
var objBase = new Base(); 
objBase.printName(); 
objBase.test(); 
console.log(objBase); 
var objSub = new Sub(); 
objSub.printName();  
console.log(objSub); 

//在上面的代码中定义了一个基础对象和一个继承Base对象的Sub对象,
//及Sub对象包含Base中的所有东西
 


注意事项:
Sub对象只从Base对象中继承定义的函数而Base对象中内部创建的属性和内部函数都没有被继承过来



2.util.inspect函数说明

util.inspect(object,[showHidden],[depth],[colors])

util.inspect功能说明:
将指定对象转换为字符串

util.inspect参数说明:
object:待转换对象
showHidden:可选参数,如果此参数为true,将会输出更多的隐藏信息。
depth:可选参数,递归层级数

例:
util.inspect举例应用

   var util = require('util'); 
function Person() { 
    this.name = 'maomao365.com'; 
    this.toString = function() { 
    return this.name; 
    }; 
} 
var obj = new Person(); 
console.log(util.inspect(obj)); 
console.log(util.inspect(obj, true)); 

util_Inspect

util_Inspect



3.util.isArray(object)函数说明

util.isArray功能说明:
检测一个对象是否为数组,如果为数组,则返回true,反之返回false

util.isArray 参数说明:
object对象

例:
isArray应用

    var util = require('util');

    console.log(util.isArray([]));
       //true
    console.log(util.isArray(new Array));
       //true
    console.log(util.isArray({}));
       //false 


4.util.isRegExp(object)函数说明

util.isRegExp 功能说明:
检测给定参数是否为一个正则表达式,
如果是正则表达式,则返回true,反之返回false

util.isRegExp 参数说明:
object:输入对象

例:
node正则表达式检测

  var util = require('util');

   util.isRegExp(/some regexp/)
     // true
   util.isRegExp(new RegExp('another regexp'))
     // true
    util.isRegExp({})
     // false
 


5.util.isDate(object)函数说明

util.isDate功能说明:
检测给定参数是否为一个日期类型,是则返回 true,反之返回false

util.isDate参数说明:
object:给定待检测的参数

例:
util.isDate检测日期的方法分享

     var util = require('util');

     util.isDate(new Date())
       // true
    util.isDate(Date())
      // false  
     util.isDate({})
       // false
   


6.util.isError(object)函数说明

util.isError函数功能说明:
检测对象是否是一个错误对象,如果对象为错误对象,则返回true,如果为正确对象,则返回false

例:
util.isError对象检测

    var util = require('util');

     util.isError(new Error())
       //true
     util.isError(new TypeError())
        //true
      util.isError({ name: 'www', message: 'information' })
        //false