NodeJS:将指定文件夹内所有文件重命名为英文

在编程之前,一定要有一个信条:代码是为了减少工作量而生的,重复枯燥的工作是不能容忍的。

需求

我前天遇到了一个小问题,需求是这样的: 我需要一个文件夹里面的所有图片文件并上传到服务器上,但是朋友给我发的文件夹里的图片文件全是中文命名,为了整洁性,我想将所有文件名rename成相应的英文。

思路

1.一个翻译工具(百度翻译API、有道翻译API等)。

2.递归遍历所有文件夹,依次重命名。

简单!

实践

  • 语言

NodeJS

  • 需求模块

fs/request。

  • 代码
//引入模块
var fs = require("fs");
var request = require('request');
//下面是百度翻译API的函数文件和参数
var fn = require('./js-sdk/md5.js');//百度的MD5编码文件
var appid = '';//你申请的百度APIID
var key = '';//你的秘钥
var salt = (new Date).getTime();//随机数
var rename = function(src) {
	// 读取目录中的所有文件/目录
	fs.readdir(src, function(err, paths) {
		if (err) {
			throw err;
		}
		paths.forEach(function(path) {
		    //拼合路径
			var _src = src + '/' + path;
			//判断文件状态
			fs.stat(_src, function(err, st) {
				if (err) {
					throw err;
				}
				// 判断是否为文件
				if (st.isFile()) {
					var query = path.split('.')[0];
					// 多个query可以用\n连接  如 query='apple\norange\nbanana\npear'
					var from = 'zh';//转译之前的语种
					var to = 'en';//转译之后的语种
					var str1 = appid + query + salt + key;
					//这里的fn是我将MD5.js文件中的MD5函数暴露并引入的
					var sign = fn.fn(str1);
					var url = 'http://api.fanyi.baidu.com/api/trans/vip/translate?q=' + query + '&from=' + from + '&to=' + to + '&appid=' + appid + '&salt=' + salt + '&sign=' + sign;
					
					request(encodeURI(url), function(error, response, body) {
						if (!error && response.statusCode == 200) {
						    //将返回的数据拼合成为路径
							var newPath = src + '/' + ((JSON.parse(body).trans_result[0].dst).replace(/\s+/g, "")).toLowerCase() + '.png';
							//重命名
							fs.rename(_src, newPath, function(err) {
								if (err) throw err;

							});
						}
					})
				}
				// 如果是目录则递归调用自身
				else if (st.isDirectory()) {
					exists(_src, rename);
				}
			});
		});
	});
	var exists = function(src, callback) {
	    callback(src);
	};
	exists('./test', rename);
};
复制代码

提示

1.优化代码的逻辑和整洁性是面对循环调用时要注意的点。

END

这篇小笔记就结束了,算是比较轻松的一个轮子了。我将在下篇文章写出由这篇衍生出的需求————将文件夹按照存放路径顺序变成一个JSON。

转载于:https://juejin.im/post/5bc30b09e51d450e6f2e9eae

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值