最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

node的文件批量重命名

来源:动视网 责编:小采 时间:2020-11-27 20:01:00
文档

node的文件批量重命名

node的文件批量重命名:这次给大家带来node的文件批量重命名,node文件批量重命名的注意事项有哪些,下面就是实战案例,一起来看一下。在一个实际需求中,需要对一批文件(如:文本、图片)进行重命名,按照数字编号。正好借此熟悉了一下node的fs文件操作,写了一个批量修改文件名的脚
推荐度:
导读node的文件批量重命名:这次给大家带来node的文件批量重命名,node文件批量重命名的注意事项有哪些,下面就是实战案例,一起来看一下。在一个实际需求中,需要对一批文件(如:文本、图片)进行重命名,按照数字编号。正好借此熟悉了一下node的fs文件操作,写了一个批量修改文件名的脚
 这次给大家带来node的文件批量重命名,node文件批量重命名的注意事项有哪些,下面就是实战案例,一起来看一下。

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

需求

现有以下图片文件

修改前

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

修改后

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

研究

node中要进行文件操作需要了解一下fs模块
在fs模块中有同步和异步两种方式

读取文件

//异步fs.readFile('test.txt', 'utf-8' (err, data) => { if (err) { throw err;
 } console.log(data);
});//同步let data = fs.readFileSync('test.txt');console.log(data);

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

写入文件

fs.writeFile('test2.txt', 'this is text', { 'flag': 'w' }, err => { if (err) { throw err;
 } console.log('saved');
});

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

r:读取文件

w:写文件

a:追加

创建目录

fs.mkdir('dir', (err) => { if (err) { throw err;
 } console.log('make dir success');
});

dir为新建目录名称

读取目录

fs.readdir('dir',(err, files) => { if (err) { throw err;
 } console.log(files);
});

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

获取文件信息

fs.stat('test.txt', (err, stats)=> { console.log(stats.isFile()); //true})

获取文件信息后stats方法:

方法

说明

stats.isFile() 是否为文件 
stats.isDirectory() 是否为目录 
stats.isBlockDevice() 是否为块设备 
stats.isCharacterDevice() 是否为字符设备 
stats.isSymbolicLink() 是否为软链接 
stats.isFIFO() 是否为UNIX FIFO命令管道 
stats.isSocket() 是否为Socket

创建读取流

let stream = fs.createReadStream('test.txt');

创建写入流

let stream = fs.createWriteStreamr('test_copy.txt');

开发

开发思路:

读取源目录

判读存放目录是否存在,不存在时新建目录

复制文件

判断复制内容是否为文件

创建读取流

创建写入流

链接管道,写入文件内容

let fs = require('fs'),
 src = 'src',
 dist = 'dist',
 args = process.argv.slice(2),
 filename = 'image',
 index = 0;//show helpif (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, (err, 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, src, dist, filename, index);
 })
 }
 });
 }
});function copyFile(files, src, dist, filename, index) {
 files.forEach(n => { let readStream,
 writeStream,
 arr = n.split('.'),
 oldPath = src + '/' + n,
 newPath = dist + '/' + filename + index + '.' + arr[arr.length - 1];
 fs.stat(oldPath, (err, stats) => { if (err) { console.log(err);
 } else if (stats.isFile()) {
 readStream = fs.createReadStream(oldPath);
 writeStream = fs.createWriteStream(newPath);
 readStream.pipe(writeStream);
 }
 });
 index++;
 })
}

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

用JS代码做出弹幕效果

用H5的canvas做出弹幕效果

文档

node的文件批量重命名

node的文件批量重命名:这次给大家带来node的文件批量重命名,node文件批量重命名的注意事项有哪些,下面就是实战案例,一起来看一下。在一个实际需求中,需要对一批文件(如:文本、图片)进行重命名,按照数字编号。正好借此熟悉了一下node的fs文件操作,写了一个批量修改文件名的脚
推荐度:
标签: 文件 批量 的文件
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top