Node内核基本自带模块fs 文件的读写

在node的内核中存在一些内置的模块 这些是最基本的服务端所必要的

1:node全局环境:global类似于浏览器端的window

2:文件读取模块:fs

fs模块同时提供了异步和同步的方法。

'use strict';

var fs = require('fs');

fs.readFile('sample.txt', 'utf-8', function (err, data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
    }
});

这边的回调函数定义了两个参数 一个是err 一个是data 当处理正确的时候,err是null。当错误的时候,会是一个错我的对象,也就是布尔值是true

当然如果需要去读区图片等二进制的资源的时候 就需要Buffer这个对象

'use strict';

var fs = require('fs');

fs.readFile('sample.png', function (err, data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
        console.log(data.length + ' bytes');
    }
});

 

写入文件:

'use strict';

var fs = require('fs');

var data = 'Hello, Node.js';
fs.writeFile('output.txt', data, function (err) {
    if (err) {
        console.log(err);
    } else {
        console.log('ok.');
    }
});

 这里需注意的是写入的文件可以自己创建也会自动创建  还有会覆盖之前的data数据、

当然怎么去获取文件的信息呢?

'use strict';

var fs = require('fs');

fs.stat('sample.txt', function (err, stat) {
    if (err) {
        console.log(err);
    } else {
        // 是否是文件:
        console.log('isFile: ' + stat.isFile());
        // 是否是目录:
        console.log('isDirectory: ' + stat.isDirectory());
        if (stat.isFile()) {
            // 文件大小:
            console.log('size: ' + stat.size);
            // 创建时间, Date对象:
            console.log('birth time: ' + stat.birthtime);
            // 修改时间, Date对象:
            console.log('modified time: ' + stat.mtime);
        }
    }
});

 以上就是简单粗暴的读写文件。还有一种方式就是采用流的方式 这种方式相对比较柔软

'use strict';

var fs = require('fs');

// 打开一个流:
var rs = fs.createReadStream('sample.txt', 'utf-8');

rs.on('data', function (chunk) {
   //data表述数据可以读区了
    console.log('DATA:')
    console.log(chunk);
});

rs.on('end', function () {
    //end表示数据已经去读结束了
    console.log('END');
});

rs.on('error', function (err) {
    console.log('ERROR: ' + err);
});

 流的方式写入文件

'use strict';

var fs = require('fs');

var ws1 = fs.createWriteStream('output1.txt', 'utf-8');
ws1.write('使用Stream写入文本数据...
');
ws1.write('END.');
ws1.end();

var ws2 = fs.createWriteStream('output2.txt');
ws2.write(new Buffer('使用Stream写入二进制数据...
', 'utf-8'));
ws2.write(new Buffer('END.', 'utf-8'));
ws2.end();

当然我们还有一种管道流。 读取文件后直接写入 

'use strict';

var fs = require('fs');

var rs = fs.createReadStream('sample.txt');
var ws = fs.createWriteStream('copied.txt');

rs.pipe(ws);
原文地址:https://www.cnblogs.com/allenxieyusheng/p/7494543.html