1
npm install --save-dev jszip  引入jszip依赖

2

const fs = require('fs');

var stat = fs.stat;

const path = require('path');

const JSZip = require('jszip');

const zip = new JSZip();

3:

//copy指定文件到指定路径下

jsCopyFileToPath(formPath, toPath) {

let tempfilename = this.getFileName(formPath);

fs.readFile(formPath, function (err, data) {

if (err) {

throw err;

}

fs.writeFile(toPath + tempfilename, data, function (error) {

if (error) {

throw error;

}

});

});

},

4:根据文件名称删除文件

deletepicByfileName(picfilePath) {

fs.unlink(picfilePath, function (err) {

if (err) {

throw err;

}

});

},

5:读取压缩文件

startZIP(currPath, zipName) {

var tempPath = path.join(currPath, 'app');

if (fs.existsSync(tempPath)) {

readDir(zip, tempPath);

}

if (isFail) {

return zip.generateAsync({

type: 'nodebuffer', //nodejs用

compression: 'DEFLATE', //压缩算法

compressionOptions: {

level: 9, //压缩级别

},

})

.then(function (content) {

fs.writeFileSync(zipName, content, 'utf-8'); //将打包的内容写入 当前目录下的 result.zip中

});

}

},

//读取目录及文件

var readDir = function (obj, nowPath) {

let tempmes = "日志文件不存在或格式不正确"

let files = fs.readdirSync(nowPath); //读取目录中的所有文件及文件夹(同步操作)

try {

files.forEach(function (fileName, index) {

console.log(fileName, index); //打印当前读取的文件名

let fillPath = nowPath + '\\' + fileName;

let file = fs.statSync(fillPath);

if (parseInt(file.size / 1024 / 1024) > 20) {//单个文件大于20M

tempmes = "日志文件格式不正确,单个日志文件超过20M"

throw Error();

}

if (CheckChinese(fileName)) {

if (file.isDirectory()) {

let dirlist = zip.folder(fileName); //压缩对象中生成该目录

readDir(dirlist, fillPath); //重新检索目录文件

} else {

isFail = true;

if (fileName.indexOf('log') === -1) {

obj.file(fileName, fs.readFileSync(fillPath));

}

}

}

});

} catch (e) {

openConfControlWindow(tempmes);

closelogwindow()

isFail = false;

}

}

6:复制文件夹

//读取目录及文件

var readDir = function (obj, nowPath) {

let tempmes = "日志文件不存在或格式不正确"

let files = fs.readdirSync(nowPath); //读取目录中的所有文件及文件夹(同步操作)

try {

files.forEach(function (fileName, index) {

console.log(fileName, index); //打印当前读取的文件名

let fillPath = nowPath + '\\' + fileName;

let file = fs.statSync(fillPath);

if (parseInt(file.size / 1024 / 1024) > 20) {//单个文件大于20M

tempmes = "日志文件格式不正确,单个日志文件超过20M"

throw Error();

}

if (CheckChinese(fileName)) {

if (file.isDirectory()) {

let dirlist = zip.folder(fileName); //压缩对象中生成该目录

readDir(dirlist, fillPath); //重新检索目录文件

} else {

isFail = true;

if (fileName.indexOf('log') === -1) {

obj.file(fileName, fs.readFileSync(fillPath));

}

}

}

});

} catch (e) {

openConfControlWindow(tempmes);

closelogwindow()

isFail = false;

}

}

var copy = function (src, dst) {

fs.readdir(src, function (err, paths) {

console.log(paths)

if (err) {

throw err;

}

paths.forEach(function (path) {

var _src = src + '/' + path;

var _dst = dst + '/' + path;

var readable;

var writable;

stat(_src, function (err, st) {

if (err) {

throw err;

}

if (st.isFile()) {

readable = fs.createReadStream(_src);

writable = fs.createWriteStream(_dst);

readable.pipe(writable);

} else if (st.isDirectory()) {

exists(_src, _dst, copy);

}

});

});

});

}

//判断是文件还是文件夹,并且创建文件夹

var exists = function (src, dst, callback) {

fs.exists(dst, function (exists) {

if (exists) {

callback(src, dst);

} else {

fs.mkdir(dst, function () {//创建目录

callback(src, dst)

})

}

})

}

调用: exists(frompath, topath, copy)

Node.js使用jszip实现文件夹操作相关推荐

  1. html选择文件夹插件,js/jq仿window文件夹框选操作插件

    0.先给大家看看效果: 1.创建一个index.html文件 Title ul{list-style: none} li{width:200px;margin:10px;float:left;heig ...

  2. linux的文件和文件夹操作

    文件和文件夹操作 创建/删除目录 - mkdir / rmdir. (base) liuzuoping@liuzuoping~Lenove-G480:~$ mkdir abc (base) liuzu ...

  3. 极简 Node.js 入门 - 3.2 文件读取

    Node.js 提供了多种读取文件的 API fs.readFile fs.readFile(path[, options], callback) 是最常用的读取文件方法,用于异步读取文件的全部内容 ...

  4. C++ :常用文件、文件夹操作汇总

    文件.文件夹操作 1.创建文件夹 2.创建文件 3.删除文件 4.删除文件夹 5.删除一个目录下所有的文件夹 6.清空文件夹 7.读取文件 8.写入文件 9.写入随机文件 10.读取文件属性 11.写 ...

  5. php文件域的作用,PHP作用域和文件夹操作示例

    1.作用域 1.1变量作用域 1.全局变量:在函数外面 2.局部变量:在函数里面,默认情况下,函数内部是不会访问函数外部的变量 3.超全局变量:可以在函数内部和函数外部访问 在函数内部访问全局变量&l ...

  6. Python基础day07 作业解析【文件操作(文件读写、文件夹操作)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day07[文件读写.文件夹操作.面向对象(类.对象)] 目录 加强训练 题目1 ...

  7. python的文件操作os_python文件、文件夹操作OS模块

    ''' 一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的 ...

  8. Node.js 得到当前目录下文件修改文件名

    博客园第一篇,平时都用 .net ,现在 node.js 比较火,就用它做一些小工具,比较方便 Node.js 得到当前目录下文件修改文件名,把 .txt 修改为.md var fs = requir ...

  9. LeetCode 1598. 文件夹操作日志搜集器

    文章目录 1. 题目 2. 解题 1. 题目 每当用户执行变更文件夹操作时,LeetCode 文件系统都会保存一条日志记录. 下面给出对变更操作的说明: "../" :移动到当前文 ...

  10. python处理文件夹_python文件及文件夹操作

    1.open()各模式详情 'r'        以只读模式打开,没有write()方法,默认打开方式 'w'       以只写模式打开,文件不存在时会自动创建文件,文件已存在时会清除文件内容并重建 ...

最新文章

  1. Python Flask学习知识点(七)
  2. php笔试判断题,php笔试题收藏
  3. 皮一皮:这才是书法的最高境界...
  4. voc生成xml 代码
  5. Scala在挖财的应用实践
  6. P2685 [TJOI2012]桥(最短路+线段树)
  7. docker 安装hadoop
  8. C#3.0新特性 和 Javascript
  9. Adobe AIR * 设置移动应用程序属性
  10. dropdownlist三级联动怎么实现_简单三步,轻松搞定一级、二级、三级下拉菜单
  11. Dxg——Raspberry Pi Pico python 开发笔记整理分类合集【所有的相关记录,都整理在此】
  12. 姿态估计之Yaw Pitch Roll
  13. Charles做弱网测试
  14. bmp 图片格式读入 cv::Mat 的 C++ 实现
  15. win10系统字体 chrome 修改苹果字体
  16. angular ui-bootstrap的Datepicker Popup组件问题总结
  17. 读Leveraging Unimodal Self-Supervised Learning for Multimodal AVSR论文
  18. scrapy安装时遇到问题怎么解决
  19. 原win7系统迁移到SSD固态硬盘
  20. 【疑难解决】通过网页访问EasyDSS报错出现“无法访问此网站”提示的排查过程

热门文章

  1. C# 利用iTextSharp画PDF
  2. HFSS----微带天线设计实例之模型建立
  3. 3D游戏引擎技术架构设计
  4. 随机前沿方法和数据包络分析
  5. 【自监督】何凯明新作MAE略读
  6. CS224N WINTER 2022(三)RNN、语言模型、梯度消失与梯度爆炸(附Assignment3答案)
  7. 推荐一款自己开发的剪映字幕翻译工具
  8. 印刷机软件测试,印刷测控条与测试版
  9. ZYNQ 系统的IEEE1588 实现方法
  10. 非计算机专业计算机基础大一考试题库,2017计算机基础大一考试题「附答案」...