【08】node 之 fs文件

var fs = require("fs");//fs 系统文件模块,对文件进行操作.Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。

1.文件读取

var fs = require("fs");
 fs.readFile('./a.txt',function(err,data){
     if(err){
         return console.error(err);
     }
    console.log("异步");
    console.log(data.toString());
 })
 var dataSyn = fs.readFileSync('./a.txt');
 console.log("同步")
 console.log(dataSyn.toString())

运行结果:

同步
a.txt文件
异步
a.txt文件

2.文件信息

语法

以下为通过异步模式获取文件信息的语法格式:

fs.stat(path, callback)

 

参数

参数使用说明如下:

path - 文件路径。

callback - 回调函数,带有两个参数如:(err, stats), stats 是 fs.Stats 对象。

fs.stat(path)执行后,会将stats类的实例返回给其回调函数。可以通过stats类中的

 

实例:

var fs = require("fs");
 fs.stat('./a.txt',function(err,data){
     if(err){
         return console.error(err);
     }
    console.log("异步");
    console.log(data);
 })
 var dataSyn = fs.statSync('./a.txt');
  console.log("同步")
 console.log(dataSyn)

运行结果中stat信息:

ino: 3940649673949397,
size: 11,    ---文件大小,kb
blocks: undefined,
atime: 2017-07-08T02:25:14.894Z,
mtime: 2017-07-08T02:27:23.823Z,
ctime: 2017-07-08T02:27:23.823Z,
birthtime: 2017-07-08T02:25:14.894Z  ---文件产生时间

 

常用到的方法:

dataSycn.birthtime

dataSycn.size

dataSyn.isDirectory()

3.写文件

语法

以下为异步模式下写入文件的语法格式:

fs.writeFile(filename, data[, options], callback)

如果文件存在,该方法写入的内容会覆盖旧的文件内容。

 

参数

参数使用说明如下:

path - 文件路径。

data - 要写入文件的数据,可以是 String(字符串) 或 Buffer(流) 对象。

options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 'w'

callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

 

实例:

// fs.writeFile(filename,data,[options],callback);
var w_data = '这是一段通过fs.writeFile函数写入的内容;\r\n';
var w_data = new Buffer(w_data);

/**
 * filename, 必选参数,文件名
 * data, 写入的数据,可以字符或一个Buffer对象
 * [options],flag,mode(权限),encoding
 * callback 读取文件后的回调函数,参数默认第一个err,第二个data 数据
 */

fs.writeFile(__dirname + '/test.txt', w_data, {flag: 'a'}, function (err) {
   if(err) {
    console.error(err);
    } else {
       console.log('写入成功');
    }
});

 

追加方式写文件

// fs.appendFile(filename,data,[options],callback);

fs.appendFile(__dirname + '/test.txt', '使用fs.appendFile追加文件内容', function () {
  console.log('追加内容完成');
});

4.删除文件

语法

以下为删除文件的语法格式:

fs.unlink(path, callback)

 

参数

参数使用说明如下:

path - 文件路径。

callback - 回调函数,没有参数。

 

实例

var fs = require("fs");

console.log("准备删除文件!");
fs.unlink('./my.txt', function(err) {
   if (err) {
       return ;
   }
   console.log("文件删除成功!");
});

 

5.删除文件夹

//获取当前目录下面所有的文件及文件夹
fs.readdir(".",function(err,files){
        console.log(files);
});

 

删除空文件

语法
以下为删除文件的语法格式:
fs.rmdir(path, callback)

参数
参数使用说明如下:
path - 文件夹路径。
callback - 回调函数,没有参数。

var fs = require(“fs”);
fs.rmdir('./aaa', function(err) {
   if (err) {
       return ;
   }
   console.log("文件夹删除成功!");
});

删除有内容的文件

/删除一个非空的文件夹(递归)
function delDir(dirPath){
    //删除目录,必须先删除目录中所有内容(文件和文件夹)。
    //获取目录下面的所有内容。
    var files = fs.readdirSync(dirPath);

    //遍历文件列表
    for (var i=0;i<files.length;i++){
        //文件名
        var file = files[i];
        //拼接路径(目录路径+文件名)
        var path = dirPath+"/"+file;

        //获取path对应文件信息对象
        var stat = fs.statSync(path);
        //通过文件信息对象判断是否是有一个文件
        if(stat.isFile()){//文件
            fs.unlinkSync(path);
        }else{//文件夹
            delDir(path);
        }
    }

    //删除文件夹
    fs.rmdirSync(dirPath);
}

delDir("./a");

6.创建目录

//使用fs.mkdir创建目录
//fs.mkdir(path, [mode], callback);

/**
 * path, 被创建目录的完整路径及目录名;
 * [mode], 目录权限,默认0777
 * [callback(err)], 创建完目录回调函数,err错误对象
 */

fs.mkdir(__dirname + '/fsDir', function (err) {
  if(err)
    throw err;
  console.log('创建目录成功')
});

 

posted on 2017-07-08 11:29  yezixuan  阅读(235)  评论(0编辑  收藏  举报