const newDirPath = path.resolve(__dirname + '/' + newDirName); // 新的文件路径
const filterFormatList = ['txt']; // 位移的文件后缀名
const notFilterNames = [newDirName, 'filterFile.js']; // 不进行位移的文件 或者文件夹 或 文件格式
let moveFileCount = 0; // 位移文件总数
let eachFileCount = 0; // 遍历文件总数
// 如果页面中没有 newFile 那么直接创建
if (!checkHasFile(rootRealPath, newDirName)) {
console.log(`如果没有${newDirName}文件夹 那么直接创建一个文件夹`);
fs.mkdirSync(newDirName);
}
readDirSync(rootRealPath);
console.log(`任务执行完成 操作文件总数为: ${eachFileCount} 位移文件总数为: ${moveFileCount}`);
function readDirSync(filePath) {
const pa = fs.readdirSync(filePath);
for (let i in pa) {
let ele = pa[i];
let index = i;
if (notFilterNames.indexOf(ele) !== -1) { // 如果是位移后目标文件夹 则不进行操作
break;
}
var info = fs.statSync(filePath + "/" + ele); // 判断是文件夹 还是文件
if (info.isDirectory()) {
// 递归遍历所有文件夹, 将文件夹中的文件取出
readDirSync(filePath + "/" + ele);
} else {
var splitArea = ele.split('.');
var fileName = splitArea.slice(0, -1); // 不带有格式的文件名
var fileFormat = splitArea.slice(-1); // 文件格式
eachFileCount++;
if (filterFormatList.indexOf(splitArea[splitArea.length - 1]) !== -1) {
moveFileCount++;
if (checkHasFile(newDirPath, ele)) {
fs.renameSync(path.resolve(`${filePath}/${ele}`), path.resolve(`${newDirPath}/${fileName}_${(new Date()).getTime()}.${fileFormat}`));
console.log('加时间戳 然后移动', ele);
} else {
console.log('没有同名文件 直接移动', ele);
fs.renameSync(path.resolve(filePath + "/" + ele), path.resolve(newDirPath + '/' + ele));
}
} else {
console.log('非 位移文件 不进行位移');
}
}
}
}
}
// 判断目标文件夹中是否有相同名称的文件
function checkHasFile(filePath, file) {
var pa = fs.readdirSync(filePath);
if (!pa || pa.length === 0) {
return false;
}
return (pa.indexOf(file) !== -1);
}
如非特殊说明,本站内容均来自于网友自主分享,概不代表本站观点,如有任何问题我们都将在收到反馈后的第一时间进行处理!
今天小编给大家分享的是Springboot下使用Redis管道(pipeline)进行批量操作的介绍,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。前言之前有业务场景需要批量插入数据到Redis中,做的过程中也有一些感悟,因此记录下来,以防忘记。下面的内容会涉及到分别使用for、管道处理批量操作,比较其所花费时间。分别使用RedisCallb...
今天小编给大家分享的是关于C++和OpenMP的介绍,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。一、背景知识1、program作用#pragma是C和C++语言中的一个预处理指令。它主要用于向编译器发送特定的信息或者指示,以便控制编译过程。#pragma通常与编译器特定的选项或功能一起使用,因此它的具体行为和实现可能因不同的编译器而有所不...
本篇文章和大家了解一下C语言结构体指针具体怎么使用。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。在C语言中,结构体指针是一种非常有用的数据类型,它可以让我们更方便地操作结构体。结构体指针可以指向结构体的实例,从而允许我们访问结构体中的成员变量,并对这些成员变量进行赋值、修改、删除等操作。本文将介绍C语言中结构体指针的基础概念和使用方法,并提供一些示例代码来帮助读者更好地理解。什...
本篇文章和大家了解一下JavaScript作用域从局部到全局介绍。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。JavaScript作用域深度剖析:从局部到全局一网打尽1.1编译原理JavaScript 事实上是一门编译语言。在传统编译语言中,一段源代码执行前会经历三个步骤:分词/词法分析(Tokenizing/Lexing)var a = ...
这篇文章主要介绍了C#中如何限制TextBox控件内输入值的范围,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录C#限制TextBox控件内输入值的范围举个例子C#TextBox控件限制只允许输入数字及小数点处理只输入数字的C#文本框只能输入数字和退格键总结C#限制TextBox控件内输入值的范围 举个例子 比如要限制TextBox1控件内只能输入1~100的...
这篇文章主要介绍了C#如何让winform程序中的输入文本框保留上次的输入问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录C#让winform程序中的输入文本框保留上次的输入C#TextBox控件,回车键实现点击按钮即自动登录摘要总结C#让winform程序中的输入文本框保留上次的输入 选中TextBox控件,在属性窗格中找到(ApplicationSet...
这篇文章主要介绍了C# 获取XML文件内容的多种方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录C#获取XML文件内容的方式一、读取外部的XML文件方法二、读取内部XML文件方法三、读取类库中XML文件的方法四、读取程序内添加的外部可见的XML文件总结C#获取XML文件内容的方式 首先设定有一个xml文件Configs.xml,其内容如下: ...
这篇文章主要介绍了C# Path类---文件路径,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录C#Path类—文件路径C#文件路径Path类测试总结C#Path类—文件路径 给定如下字符串类型filePath,表示一个文件路径: stringfilePath="D:\\Program\\Test\\Config.txt"; ...
这篇文章主要介绍了C#如何判断.Net Framework版本是否满足软件运行需要的版本问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录判断.NetFramework版本是否满足软件运行需要的版本老的方法,支持2.0及以上最后将判断的代码放在Main方法里总结判断.NetFramework版本是否满足软件运行需要的版本 不直接运行软件,而是运行一个引导程序...
这篇文章主要介绍了c#判断代码是否执行超时的几种方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录c#判断代码是否执行超时一、使用委托二、使用Task三、使用Timer四、使用Thread总结c#判断代码是否执行超时 一、使用委托 delegatevoiddg(); dgdgCase; voidmethod() { dgCase=()=> ...