node文件批量重命名的方法示例

前端之家收集整理的这篇文章主要介绍了node文件批量重命名的方法示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在一个实际需求中,需要对一批文件(如:文本、图片)进行重命名,按照数字编号。正好借此熟悉了一下node的fs文件操作,写了一个批量修改文件名的脚本。

需求

现有以下图片文件

需要批量修改文件名称,变为统一前缀名称并且自增索引,修改效果

最简单的人力操作就是逐个文件重命名,但本着DRY(Don't repeat yourself)原则,还是写一个node脚本搞定。

研究

node中要进行文件操作需要了解一下fs模块

在fs模块中有同步和异步两种方式

读取文件

403_32@ { if (err) { throw err; } console.log(data); });

//同步
let data = fs.readFileSync('test.txt');
console.log(data);

异步读取文件参数:文件路径,编码方式,回调函数

写入文件

{ if (err) { throw err; } console.log('saved'); });

写入文件参数:目标文件,写入内容,写入形式,回调函数

flag写入方式:

r:读取文件 w:写文件 a:追加

创建目录

{ if (err) { throw err; } console.log('make dir success'); });

dir为新建目录名称

读取目录

{ if (err) { throw err; } console.log(files); });

dir为读取目录名称,files为目录下的文件或目录名称数组

获取文件信息

{ console.log(stats.isFile()); //true })

获取文件信息后stats方法

方法 说明 文件链接

创建读取流

创建写入流

开发

开发思路:

  1. 读取源目录
  2. 判读存放目录是否存在,不存在时新建目录
  3. 复制文件
  4. 判断复制内容是否为文件
  5. 创建读取流
  6. 创建写入流
  7. 链接管道,写入文件内容
//show help
if (args.length === 0 || args[0].match('--help')) {
console.log('--help\n \t-src 文件源\n \t-dist 文件目标\n \t-n 文件名\n \t-i 文件名索引\n');
return false;
}

args.forEach((item,i) => {
if (item.match('-src')) {
src = args[i + 1];
} else if (item.match('-dist')) {
dist = args[i + 1];
} else if (item.match('-n')) {
filename = args[i + 1];
} else if (item.match('-i')) {
index = args[i + 1];
}
});

fs.readdir(src,files) => {
if (err) {
console.log(err);
} else {
fs.exists(dist,exist => {
if (exist) {
copyFile(files,src,dist,filename,index);
} else {
fs.mkdir(dist,() => {
copyFile(files,index);
})
}
});
}
});

function copyFile(files,index) {
files.forEach(n => {
let readStream,writeStream,arr = n.split('.'),oldPath = src + '/' + n,newPath = dist + '/' + filename + index + '.' + arr[arr.length - 1];
fs.stat(oldPath,stats) => {
if (err) {
console.log(err);
} else if (stats.isFile()) {
readStream = fs.createReadStream(oldPath);
writeStream = fs.createWriteStream(newPath);
readStream.pipe(writeStream);
}
});
index++;
})
}

效果

总结

node提供了很多模块可以帮助我们完成不同需求的功能开发,使javascript不仅仅局限与浏览器中,尝试自己编写一些脚本有助于对这些模块的理解,同时也能提高办公效率。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

原文链接:https://www.f2er.com/nodejs/35647.html

猜你在找的Node.js相关文章