|
@@ -68,16 +68,16 @@ function copyFileSync(source, destination) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// 读取日志(倒叙)指定行数
|
|
|
-function readLastNLines(filePath, n) {
|
|
|
- const content = fs.readFileSync(filePath, 'utf8');
|
|
|
- const lines = content.trim().split('\n');
|
|
|
- const lastNLines = lines.slice(-n).join('\n');
|
|
|
-
|
|
|
- // 此处处理或输出最后n行的内容
|
|
|
- // console.log(lastNLines);
|
|
|
- return lastNLines.split("\n").reverse();
|
|
|
-}
|
|
|
+// // 读取日志(倒叙)指定行数
|
|
|
+// function readLastNLines(filePath, n) {
|
|
|
+// const content = fs.readFileSync(filePath, 'utf8');
|
|
|
+// const lines = content.trim().split('\n');
|
|
|
+// const lastNLines = lines.slice(-n).join('\n');
|
|
|
+//
|
|
|
+// // 此处处理或输出最后n行的内容
|
|
|
+// // console.log(lastNLines);
|
|
|
+// return lastNLines.split("\n").reverse();
|
|
|
+// }
|
|
|
|
|
|
|
|
|
// 下载文件
|
|
@@ -87,7 +87,41 @@ function dowFile(url, fileName, dowPath, headers) {
|
|
|
|
|
|
// 删除文件
|
|
|
function delFile() {
|
|
|
+}
|
|
|
+
|
|
|
+/***********************************/
|
|
|
+function getLastFile(dirPath, number, callback) {
|
|
|
+ fs.readdir(dirPath, async (err, files) => {
|
|
|
+ if (err) {
|
|
|
+ console.error(`Could not list the directory.`, err);
|
|
|
+ process.exit(1);
|
|
|
+ }
|
|
|
+ let fileList = [];
|
|
|
+ for (file of files) {
|
|
|
+ const filePath = path.join(dirPath, file);
|
|
|
+ const stats = await fs.promises.stat(filePath);
|
|
|
+ fileList.push({ name: file, time: stats.mtimeMs });
|
|
|
+ }
|
|
|
+ fileList.sort((a, b) => b.time - a.time);
|
|
|
+ lastFileList = fileList.slice(0, number != -1 ? number : fileList.length);
|
|
|
+ lastFileNameList = lastFileList.map((item) => item.name);
|
|
|
+ callback(lastFileNameList.reverse(), lastFileList.reverse());
|
|
|
+ });
|
|
|
+}
|
|
|
|
|
|
+// 读取日志(倒叙)指定行数
|
|
|
+function readLastNLines(dirPath, filePathList, n) {
|
|
|
+ const fileList = filePathList.map((item) => {
|
|
|
+ const content = fs.readFileSync(`${dirPath}/${item}`, "utf8");
|
|
|
+ const lines = content.trim().split("\n");
|
|
|
+ return {
|
|
|
+ filePath: item,
|
|
|
+ lines: lines,
|
|
|
+ };
|
|
|
+ });
|
|
|
+ const allFile = [].concat(...fileList.map((item) => item.lines));
|
|
|
+ const lastNLines = allFile.slice(-n).join("\n");
|
|
|
+ return lastNLines.split("\n").reverse();
|
|
|
}
|
|
|
|
|
|
|
|
@@ -97,5 +131,6 @@ module.exports = {
|
|
|
checkPathSync,
|
|
|
writeFile,
|
|
|
copyFileSync,
|
|
|
- readLastNLines
|
|
|
+ readLastNLines,
|
|
|
+ getLastFile
|
|
|
}
|