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写入文本数据...\n'); ws1.write('END.'); ws1.end(); var ws2 = fs.createWriteStream('output2.txt'); ws2.write(new Buffer('使用Stream写入二进制数据...\n', '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);
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号