返回
鱼塘由来:从fs模块认识文件系统的四种编码字符集编码
前端
2023-10-03 05:01:45
我们从一个最基础的模块:文件读写,而今天学习的是fs模块。
使用 fs 模块有两种思路:一是自己手动来写一个函数,二是使用第三方包来解决。
一般情况下,我们主要是在手写模块上面比较熟悉,但如果经常需要使用一种功能,久而久之也会选择第三方包,因为第三方包的好处是很容易上手,而且实现的功能很健全。下面我们来使用第三方包来做。
首先,我们来安装这个包。
npm i mkdirp
安装之后,我们来写代码。
const fs = require('fs');
const mkdirp = require('mkdirp');
mkdirp('/tmp/upload', function(err) {
if (err) console.error(err)
else console.log('pow!')
});
然后,运行代码,即可看到终端上输出:
pow!
这一种方法的好处是比较容易实现,而且第三方包实现的功能也比较全面。但是,如果我们要手动写这个函数的话,就稍微麻烦一些。
首先,我们来写一个函数,用于判断服务器上面有没有 upload 目录,如果没有则创建,如果有则不改动。
function isExist(path, callback) {
fs.exists(path, function(exists) {
if (exists) {
callback(null, true);
} else {
mkdirp(path, function(err) {
if (err) {
callback(err);
} else {
callback(null, false);
}
});
}
});
}
然后,我们来调用这个函数,看看效果。
isExist('/tmp/upload', function(err, exists) {
if (err) {
console.error(err);
} else {
if (exists) {
console.log('目录已经存在');
} else {
console.log('目录不存在,已经创建');
}
}
});
运行代码,即可看到终端上输出:
目录不存在,已经创建
这种方法虽然比较麻烦,但是可以自己控制函数的实现细节,而且可以根据自己的需求来定制函数的功能。
在本文中,我们学习了如何使用 fs 模块来创建和修改文件,以及如何使用 async 和 await 语法来简化异步操作。我们还探讨了一些常见的编码问题,以及如何正确地处理它们。希望这篇文章对您有所帮助。