参考博客:https://blog.csdn.net/qq_34803821/article/details/84633944
https://www.jb51.net/article/148582.htm
感谢原作者分享。同时附上 node.js 14.17.3 版本官网文档网址:
https://nodejs.org/dist/latest-v14.x/docs/api/documentation.html
一、异步读取文本文件
'use strict';
var fs = require('fs');
fs.readFile('sample.txt', 'utf-8', function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
});
此时,sample.txt文件必须在当前目录下,且文件编码为utf-8。文件也可位于其它路径,此时在第一个参数中一起写上文件路径即可,注意路径中的斜杠要左下右上,例如:“tempPath/sample.txt”。
二、异步读取二进制文件
'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');
}
});
当读取二进制文件时,不传入文件编码,回调函数的data参数将返回一个Buffer对象。在Node.js中,Buffer对象就是一个包含零个或任意个字节的数组(注意和Array不同)。
Buffer对象可以和String作转换,例如,把一个Buffer对象转换成String:
// Buffer -> String
var text = data.toString('utf-8');
console.log(text);
或者把一个String转换成Buffer:
// String -> Buffer
var buf = Buffer.from(text, 'utf-8');
console.log(buf);
三、同步读文件
'use strict';
try {
var data = fs.readFileSync( 'sample.txt', 'utf-8' );
console.log( data );
} catch ( err ) {
// 出错了
}
如果出错了,可以用try - catch 捕捉错误进行处理。
四、写文件
'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.');
}
});
writeFile()的参数依次为文件名、数据和回调函数。如果传入的数据是String,默认按UTF-8编码写入文本文件,如果传入的参数是Buffer,则写入的是二进制文件。回调函数由于只关心成功与否,因此只需要一个err参数。
和readFile()类似,writeFile()也有一个同步方法,叫writeFileSync():
'use strict';
var fs = require( 'fs' );
var data = 'Hello, Node.js';
fs.writeFileSync ( 'output.txt', data );
五、获取文件状态
如果我们要获取文件大小,创建时间等信息,可以使用fs.stat(),它返回一个Stat对象,能告诉我们文件或目录的详细信息:
'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);
}
}
});
stat()也有一个对应的同步函数statSync(),可以试着改写上述异步代码为同步代码。
六、判断文件或目录是否存在
'use strict';
var fs = require('fs');
fs.exists('/etc/passwd', ( exists ) => {
console.log( exists ? 'file exists.' : 'file does not exist!');
});
在打开文件前判断一下文件是否存在是非常有用的,可以在出错时给出必要的提示,帮助发现和解决问题。
12万+

被折叠的 条评论
为什么被折叠?



