node重命名文件名_nodeJS遍历,替换,重命名文件夹下的所有文件及文件的一些方法...

1、遍历当前文件夹下所有文件

var fs = require(‘fs’);

var path = require(‘path’);

//解析需要遍历的文件夹,我这以E盘根目录为例

var filePath = path.resolve(‘E:’);

//调用文件遍历方法

fileDisplay(filePath);

/**

文件遍历方法

@param filePath 需要遍历的文件路径

/

function fileDisplay(filePath){

//根据文件路径读取文件,返回文件列表

fs.readdir(filePath,function(err,files){

if(err){

console.warn(err)

}else{

//遍历读取到的文件列表

files.forEach(function(filename){

//获取当前文件的绝对路径

var filedir = path.join(filePath,filename);

//根据文件路径获取文件信息,返回一个fs.Stats对象

fs.stat(filedir,function(eror,stats){

if(eror){

console.warn(‘获取文件stats失败’);

}else{

var isFile = stats.isFile();//是文件

var isDir = stats.isDirectory();//是文件夹

if(isFile){

console.log(filedir);

}

if(isDir){

fileDisplay(filedir);//递归,如果是文件夹,就继续遍历该文件夹下面的文件

}

}

})

});

}

});

}

2、把文件进行重命名;

fs.rename(oldPath, newPath, callback); //重命名文件或文件夹

/*

oldPath, 原目录/文件的完整路径及名;

newPath, 新目录/文件的完整路径及名;如果新路径与原路径相同,而只文件名不同,则是重命名

[callback(err)], 操作完成回调函数;err操作失败对象

*/

var fs=require(‘fs’);

var path=require(‘path’);

var path1=path.resolve(’/test1’);

var path2=path.resolve(’/test2’);

fs.rename(path1,path2,function(err){

if(err){

console.error(err);

return;

}

console.log(‘重命名成功’);

});

3、nodejs批量替换js/html文件内容

var fs = require(‘fs’)

var path=require(‘path’);

var filePath=path.resolve(__dirname+’/js’);

//readdir方法读取文件名

//readFile方法读取文件内容

//writeFile改写文件内容

fs.readdir(filePath, ‘utf8’, function (err,data) {

data.forEach(function(item, index) {

//console.log(item)

fs.readFile(’./js/’+item,‘utf8’,function(err,files){

//console.log(files)

var result = files.replace(/要替换的内容/g, ‘替换后的内容’); fs.writeFile('./js/'+item, result, 'utf8', function (err) {

if (err) return console.log(err);

});

})

});

});

4、nodejs批量复值文件;

let fs = require(‘fs’),

src = ‘src’,

dist = ‘dist’,

args = process.argv.slice(2),//从数组第二个开始返回

filename = ‘image’,

index = 0;

//执行命令错误提示

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];//文件索引 从x开始

}

});

fs.readdir(src, (err, files) => {//读取源文件目录

if (err) {

console.log(err);

} else {

console.log(dist);

fs.access(dist, existing => {

if (existing) {//如果dist文件夹不存在则新建文件夹

fs.mkdir(dist, () => {

copyFile(files, src, dist, filename, index);

})

} else {

copyFile(files, src, dist, filename, index);

}

});

}

});

function copyFile(files, src, dist, filename, index) {

files.forEach(n => {

let readFile,

writeFile,

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()) {//判断是否是文件 执行复制移动操作

readFile = fs.createReadStream(oldPath);

writeFile = fs.createWriteStream(newPath);

readFile.pipe(writeFile);//把当前的可读流和另外一个可写流连接起来。可读流中的数据会被自动写入到可写流中。

}

});

index++;

})

}

使用方法:node xx -src imgdir -dist newImgDir -n newName- -i 1

xx:js文件;imgdir:需要重命名的图片的文件夹名;newImgDir:重命名以后存放图片的文件夹名

newName:新图片的前缀名;1:索引从1开始 可以自定义

5、fs.access()注意事项

var fs = require(“fs”);

/*

-----判断文件和目录是否存在;

fs.access(path[, mode], callback);

path:判断的文件名;

callback:回调函数;

/

fs.access("./wenjian.txt",function(err){

// 文件和目录不存在的情况下;

if(err.code == “ENOENT”){

console.log(“文件和目录不存在”)

}

})

/

不建议在调用 fs.open() 、 fs.readFile() 或 fs.writeFile() 之前使用 fs.access() 检查一个文件的可访问性

*/

//不建议使用:

fs.access("./wenjian.txt",function(err){

if(!err){

console.log(“文件已经存在”);

return;

}

fs.open("./wenjian.txt",function(err){

console.log(err)

})

})

6、fs.stat和fs.fstat区别:

fs.stat操作:

fs.stat(’./aa.js’, function(err, stats) {

if (err) {

throw err;

}

console.log(stats);

});

fs.fstat操作:

fs.open(’./aa.js’, ‘a’, function(err, fd) {

if (err) {

throw err;

}

fs.fstat(fd, function(err, stats) {

if (err) {

throw err;

}

console.log(stats);

});

})

fs.stat接收的第一个参数是一个文件路径字符串

fs.fstat接收的是一个文件描述符;

内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值