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

需求

我前天遇到了一个小问题,需求是这样的: 我需要一个文件夹里面的所有图片文件并上传到服务器上,但是朋友给我发的文件夹里的图片文件全是中文命名,为了整洁性,我想将所有文件名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

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

  1. php遍历文件夹下文件内容_PHP递归遍历指定文件夹内的文件实现方法

    今天早上在地铁上看了关于文件和文件夹的一章,正好最近刚搞懂linux的文件系统,觉得对文件属性的访问跟Shell命令很像,所以想晚上来实践一下. 发现php的文件夹函数好像没有提供遍历文件夹下的所有文 ...

  2. [VS_C#实战案例](1)批量提取文件夹内txt文件的指定字符串生成excel表格

    [VS_C#实战案例](1)批量提取文件夹内txt内容生成excel表格 个人边学习边开发的日常总结,发布在此与各位交流.共同进步. 语言:c# 软件:visual studio 实现功能:提取指定文 ...

  3. MATLAB 删除指定文件夹内的文件夹及多个子文件夹

    初入实验室,本科使用过一点matlab,遗忘的很快.索性用博客记录使用期间碰到的一些问题及解决方案. 文章目录 1. 问题来源 2. 代码 2.1. MATLAB Documentation - Ma ...

  4. java 自动删除文件夹,定时删除文件及文件夹 java 定时删除文件夹内所有文件

    如何定时删除电脑里某个文件夹里的东西 例如我要删除C:\Program Files\大话西游OnlineII\D3DX9_43.dll编写个代在记事本创建一个bat小脚本,输入@echo offdel ...

  5. PHP实现删除文件夹内的文件的功能

    PHP实现文件夹内的文件删除功能,大多会用到unlink这个函数.如果要删除指定的文件直接unlink(文件地址),如果要删除一个文件夹内的所有文件,肯定要遍历文件夹,或者找到一个函数能够知道文件夹内 ...

  6. iphone文件夹如何添加服务器,iPhone怎么在文件夹内新建文件夹 iPhone在文件夹内新建文件夹方法...

    iPhone怎么在文件夹内新建文件夹?相信很多朋友都不会,于是在各处搜索文件夹套文件夹的方法.但是试过了都失败了,于是乎自己摸索了一下,本教程支持iPad.itouch.iPhone,支持iOS8.4 ...

  7. 下列哪项能正确遍历文件夹内所有文件?

    下列哪项能正确遍历文件夹内所有文件? A: import ospath = os.getcwd#获取当前路径listDir=os.listdir(path)#获取当前目录下的所有内容for x in ...

  8. 【Java文件操作(三)】递归复制文件夹内所有文件

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  9. 服务器内提取文件,linux命令如何提取文件夹内特定文件路径

    linux命令如何提取文件夹内特定文件路径 发布时间:2020-07-20 16:35:25 来源:亿速云 阅读:102 作者:小猪 栏目:服务器 这篇文章主要为大家展示了linux命令如何提取文件夹 ...

  10. 查看服务器文件夹,远程查看服务器文件夹内的文件夹

    远程查看服务器文件夹内的文件夹 内容精选 换一换 请使用Mind Studio的安装用户进行升级操作,在升级前请先登录到后台服务器,切换到root用户在/usr/bin目录下执行./add_sudo. ...

最新文章

  1. java jdbc 表存在_使用JDBC查询是否存在某表或视图,按月动态生成表
  2. 《数据分析实战:基于EXCEL和SPSS系列工具的实践》——3.3 耗时耗力的数据整理过程...
  3. Linux的内存分页管理
  4. openstack云主机无法绑定ip_智汇华云|OpenStack 虚拟机 GPU 性能优化
  5. ubuntu12.10安装openssh-server与本身的软件冲突
  6. 前端学习(2638):读懂代码之登录页login.vue之ref和rules
  7. LeetCode 1739. 放置盒子(数学)
  8. python语句分为复合语句_对Python中for复合语句的使用示例讲解
  9. Spring Boot与Docker部署
  10. MongoDB命令学习
  11. 2004-7-21/22+ DataGrid知识整理
  12. python 爬取种子_利用python代码爬取torrentkitty上的种子
  13. rk3399 rt5640 录音调试记录
  14. 网络游戏植入广告的案例
  15. 推荐两款很好用的听书APP
  16. 多张图片合成一张jpg工具_将多张图片合并成一张图片的小工具Collagerator
  17. Autoware 1.14(WSL2) 与LG SVL Simulator(Win11)联合仿真
  18. 破圈、增长、被加码,集合店能创造美妆行业新风口?
  19. SQLite 对时间的支持
  20. 辨析 可交付成果验收与项目验收

热门文章

  1. 如何用html绘制阴影图形,HTML5 给图形绘制阴影
  2. 思科服务器与交换机链接配置文件,使用思科S系列交换机上的配置迁移工具转换配置文件...
  3. ds28e01完全数据手册_如何借助《活动管理手册》搭建营销体系?(内含课件PPT)...
  4. 一个方法可解决两个问题:1:Unity打开时一直加载,不能NEW,只能OPEN; 2:Unity 出现license error,re-active时一直循环报错
  5. c#语言中代替指针,如何在C#中使指针通用?
  6. 华为鸿蒙系统英语报纸_华为操作系统“鸿蒙”的英文是什么?
  7. 4j是合法python数字类型_python数字类型
  8. linux shell数组深入学习理解
  9. 何时使用构造函数,构造函数使用new关键字
  10. NRF52810能不能替代NRF52832