node.js中fs文件系统模块的使用方法实例详解(2)

const fs = require('fs'); fs.open('./1.txt', 'w+', 0o666, function (err, fd) { let data = Buffer.from('数据\n'); let task = []; //我们往文件中循环写入数据 for (ix = 0; ix < 1000; ix++) { task.push(function () { return new Promise((resolve, reject) => { fs.write(fd, data, 0, data.length, null, function (err, written, buffer) { if (err) { reject(err); } else { resolve(written); } }); }); }); } Promise.all(task.map(fn => fn())).then(value => { console.log(value); }, reason => { console.log(reason); }); //当们写完数据后,一般会强制刷新缓冲区,让数据写入到文件里,然后关闭文件。 //因为系统为了效率,我们写入的数据通常会放到一个缓冲区中,当缓冲区满了后,系统就一次把数据写到文件。 fs.fsync(fd, function (err) { console.log(err); //关闭文件 fs.close(fd, function (err) { console.log(err); }) }); });

七、创建目录

const fs = require('fs'); //创建目录,默认情况下不支持递归创建目录 fs.mkdir('./a', function (err) { console.log(err); }); //通过设置参数二中的recursive为true,则可以递归创建目录 fs.mkdir('./a/b/c', {'recursive': true}, function (err) { console.log(err); });

八、删除目录

const fs = require('fs'); //rmdir无法删除非空目录 fs.rmdir('./a', function (err) { console.log(err); });

九、测试文件或目录是否存在,是否可读,是否可写

const fs = require('fs'); let path = './a'; //判断是否存在 fs.access(path, fs.constants.F_OK, function (err) { console.log(err ? '不存在' : '存在'); }); //判断是否可读 fs.access(path, fs.constants.R_OK, function (err) { console.log(err ? '不可读' : '可读'); }); //判断是否可写 fs.access(path, fs.constants.W_OK, function (err) { console.log(err ? '不可写' : '可写'); });

十、读取目录下的所有文件

const fs = require('fs'); const path = require('path'); //读取目录下所有文件 fs.readdir('./a', function (err, files) { console.log(files); }); //递归的读取一个目录所有文件 function readDir(dir) { fs.stat(dir, function (err, stats) { if (stats.isDirectory()) { console.log(dir); fs.readdir(dir, function (err, files) { files.map(value => { let cur = path.join(dir, value); fs.stat(cur, function (err, stats) { if (stats.isDirectory()) { readDir(cur); } else { console.log(cur); } }); }); }); } else { console.log(dir); } }); } readDir('./node_modules');

十一、查看文件或目录的详细信息

const fs = require('fs'); //获取目录详细信息 fs.stat('./a', function (err, stats) { console.log(stats); }); //获取文件详细信息 fs.stat('./1.txt', function (err, stats) { console.log(stats); });

stats.size 表示文件大小。

stats.atime 表示文件中的数据最后访问时间。

stats.mtime 表示文件中的内容修改最后时间。

stats.ctime 表示文件权限,拥有者,所属组,链接数发生改变时的时间。

stats.birthtime 表示文件创建时间。

十二、重命名或移动文件

const fs = require('fs'); //重命名文件 fs.rename('./1.txt', './b.txt', function (err) { console.log(err); }); //移动文件 fs.rename('./2.txt', './a/b/c/2.txt', function (err) { console.log(err); });

十三、删除文件

const fs = require('fs'); //删除文件 fs.unlink('./3.txt', function (err) { console.log(err); });

十四、截取文件

const fs = require('fs'); //截取文件成3个字节 fs.truncate('./b.txt', 3, function (err) { console.log(err); });

十五、监视文件或目录的状态改变

const fs = require('fs'); //监视目录 fs.watchFile('./a', function (curr, prev) { console.log(curr); console.log(prev); if (curr.mtimeMs !== prev.mtimeMs) { console.log('内容发生的改变'); } });

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d55575c4c92cb101b1ff52adcb2190dd.html