mirror of
https://github.com/MCSManager/MCSManager.git
synced 2025-02-17 15:59:41 +08:00
新增 删除与解压全部多进程化
This commit is contained in:
parent
b11c7b300f
commit
11933c4a24
@ -1,38 +0,0 @@
|
||||
const AdmZip = require('adm-zip');
|
||||
const iconv = require('iconv-lite');
|
||||
const os = require('os');
|
||||
|
||||
let SYSTEM_CODE = null;
|
||||
if (os.platform() == "win32")
|
||||
SYSTEM_CODE = 'GBK';
|
||||
else
|
||||
SYSTEM_CODE = 'UTF-8';
|
||||
|
||||
//参数获取
|
||||
const argv = process.argv;
|
||||
const realArgv = argv.filter((val, index) => {
|
||||
return index >= 2
|
||||
});
|
||||
|
||||
if (realArgv.length == 1) {
|
||||
//解压子进程开始执行
|
||||
console.log('[ 解压 ]', '解压', realArgv, '任务开始');
|
||||
|
||||
//执行解压
|
||||
const absPath = realArgv[0];
|
||||
const zip = new AdmZip(absPath);
|
||||
const zipExtractDir = absPath.split('.')[0];
|
||||
zip.extractAllTo(zipExtractDir, true);
|
||||
// 解决目录中中文乱码问题
|
||||
const zipEntries = zip.getEntries();
|
||||
for (let i = 0; i < zipEntries.length; i++) {
|
||||
const entry = zipEntries[i];
|
||||
entry.entryName = iconv.decode(entry.rawEntryName, SYSTEM_CODE);
|
||||
}
|
||||
//全部解压
|
||||
zip.extractAllTo(zipExtractDir, true);
|
||||
|
||||
//解压完成,进程终止
|
||||
console.log('[ 解压 ]', '解压', realArgv, '任务结束');
|
||||
process.exit(0);
|
||||
}
|
52
onlinefs/module/extend_worker.js
Normal file
52
onlinefs/module/extend_worker.js
Normal file
@ -0,0 +1,52 @@
|
||||
const AdmZip = require('adm-zip');
|
||||
const iconv = require('iconv-lite');
|
||||
const fsex = require('fs-extra');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
|
||||
let SYSTEM_CODE = null;
|
||||
if (os.platform() == "win32")
|
||||
SYSTEM_CODE = 'GBK';
|
||||
else
|
||||
SYSTEM_CODE = 'UTF-8';
|
||||
|
||||
//参数获取
|
||||
const argv = process.argv;
|
||||
const realArgv = argv.filter((val, index) => {
|
||||
return index >= 2
|
||||
});
|
||||
|
||||
if (realArgv.length >= 1) {
|
||||
const ACTION = realArgv[0];
|
||||
|
||||
//解压子进程开始执行
|
||||
if (ACTION === 'extract') {
|
||||
//执行解压
|
||||
const absPath = realArgv[1];
|
||||
const zip = new AdmZip(absPath);
|
||||
//目录名与原文件同名
|
||||
const zipExtractDir = path.normalize(
|
||||
path.dirname(absPath) + '/解压文件_' + path.basename(absPath, path.extname(absPath))
|
||||
);
|
||||
console.log('[ 解压任务 ]', '解压', realArgv[1], '任务开始\n', '解压到:', zipExtractDir);
|
||||
zip.extractAllTo(zipExtractDir, true);
|
||||
// 解决目录中中文乱码问题
|
||||
const zipEntries = zip.getEntries();
|
||||
for (let i = 0; i < zipEntries.length; i++) {
|
||||
const entry = zipEntries[i];
|
||||
entry.entryName = iconv.decode(entry.rawEntryName, SYSTEM_CODE);
|
||||
}
|
||||
//全部解压
|
||||
zip.extractAllTo(zipExtractDir, true);
|
||||
//解压完成,进程终止
|
||||
console.log('[ 解压任务 ]', '解压', realArgv[1], '任务结束');
|
||||
}
|
||||
|
||||
//文件删除子进程开始执行
|
||||
if (ACTION === 'remove') {
|
||||
console.log('[ 删除任务 ]', '删除:', realArgv[1]);
|
||||
fsex.removeSync(realArgv[1])
|
||||
}
|
||||
|
||||
process.exit(0);
|
||||
}
|
@ -6,14 +6,8 @@ const {
|
||||
BaseFileOperate
|
||||
} = require("./base_fsoperate");
|
||||
const fsex = require('fs-extra');
|
||||
const AdmZip = require('adm-zip');
|
||||
const child_process = require('child_process');
|
||||
|
||||
let SYSTEM_CODE = null;
|
||||
if (os.platform() == "win32")
|
||||
SYSTEM_CODE = 'GBK';
|
||||
else
|
||||
SYSTEM_CODE = 'UTF-8';
|
||||
|
||||
//文件操作具体
|
||||
class FileOperate extends BaseFileOperate {
|
||||
@ -88,13 +82,15 @@ class FileOperate extends BaseFileOperate {
|
||||
|
||||
rm(path) {
|
||||
this.pathAccessCheck(path, (absPath) => {
|
||||
// if (fs.statSync(absPath).isDirectory()) {
|
||||
// this._rm_rf(absPath);
|
||||
// }
|
||||
// fs.unlinkSync(absPath);
|
||||
fsex.remove(absPath, (err) => {
|
||||
if (err) return;
|
||||
});
|
||||
//如果仅单文件则直接删除
|
||||
if (!fs.statSync(absPath).isDirectory()) {
|
||||
fsex.remove(absPath, (err) => {
|
||||
if (err) return;
|
||||
});
|
||||
} else {
|
||||
//若删除文件夹则分配子进程来进行解压操作
|
||||
child_process.fork("./onlinefs/module/extend_worker.js", ['remove', absPath]);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -155,7 +151,7 @@ class FileOperate extends BaseFileOperate {
|
||||
extract(path) {
|
||||
return this.pathAccessCheck(path, (absPath) => {
|
||||
//分配子进程来进行解压操作
|
||||
child_process.fork("./onlinefs/module/ExtractTaskWorker.js", [absPath]);
|
||||
child_process.fork("./onlinefs/module/extend_worker.js", ['extract', absPath]);
|
||||
});
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user