@H_301_0@在一个实际需求中,需要对一批文件(如:文本、图片)进行重命名,按照数字编号。正好借此熟悉了一下node的fs文件操作,写了一个批量修改文件名的脚本。
@H_301_0@
需求
@H_301_0@现有以下图片文件研究
@H_301_0@node中要进行文件操作需要了解一下fs模块 @H_301_0@在fs模块中有同步和异步两种方式 @H_301_0@读取文件
//同步
let data = fs.readFileSync('test.txt');
console.log(data);
写入文件
创建目录
读取目录
获取文件信息
说明 |
---|
创建读取流
开发
@H_301_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];
}
});
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++;
})
}