Node.js使用jszip实现文件夹操作
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实现文件夹操作相关推荐
- html选择文件夹插件,js/jq仿window文件夹框选操作插件
0.先给大家看看效果: 1.创建一个index.html文件 Title ul{list-style: none} li{width:200px;margin:10px;float:left;heig ...
- linux的文件和文件夹操作
文件和文件夹操作 创建/删除目录 - mkdir / rmdir. (base) liuzuoping@liuzuoping~Lenove-G480:~$ mkdir abc (base) liuzu ...
- 极简 Node.js 入门 - 3.2 文件读取
Node.js 提供了多种读取文件的 API fs.readFile fs.readFile(path[, options], callback) 是最常用的读取文件方法,用于异步读取文件的全部内容 ...
- C++ :常用文件、文件夹操作汇总
文件.文件夹操作 1.创建文件夹 2.创建文件 3.删除文件 4.删除文件夹 5.删除一个目录下所有的文件夹 6.清空文件夹 7.读取文件 8.写入文件 9.写入随机文件 10.读取文件属性 11.写 ...
- php文件域的作用,PHP作用域和文件夹操作示例
1.作用域 1.1变量作用域 1.全局变量:在函数外面 2.局部变量:在函数里面,默认情况下,函数内部是不会访问函数外部的变量 3.超全局变量:可以在函数内部和函数外部访问 在函数内部访问全局变量&l ...
- Python基础day07 作业解析【文件操作(文件读写、文件夹操作)】
视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day07[文件读写.文件夹操作.面向对象(类.对象)] 目录 加强训练 题目1 ...
- python的文件操作os_python文件、文件夹操作OS模块
''' 一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的 ...
- Node.js 得到当前目录下文件修改文件名
博客园第一篇,平时都用 .net ,现在 node.js 比较火,就用它做一些小工具,比较方便 Node.js 得到当前目录下文件修改文件名,把 .txt 修改为.md var fs = requir ...
- LeetCode 1598. 文件夹操作日志搜集器
文章目录 1. 题目 2. 解题 1. 题目 每当用户执行变更文件夹操作时,LeetCode 文件系统都会保存一条日志记录. 下面给出对变更操作的说明: "../" :移动到当前文 ...
- python处理文件夹_python文件及文件夹操作
1.open()各模式详情 'r' 以只读模式打开,没有write()方法,默认打开方式 'w' 以只写模式打开,文件不存在时会自动创建文件,文件已存在时会清除文件内容并重建 ...
最新文章
- Python Flask学习知识点(七)
- php笔试判断题,php笔试题收藏
- 皮一皮:这才是书法的最高境界...
- voc生成xml 代码
- Scala在挖财的应用实践
- P2685 [TJOI2012]桥(最短路+线段树)
- docker 安装hadoop
- C#3.0新特性 和 Javascript
- Adobe AIR * 设置移动应用程序属性
- dropdownlist三级联动怎么实现_简单三步,轻松搞定一级、二级、三级下拉菜单
- Dxg——Raspberry Pi Pico python 开发笔记整理分类合集【所有的相关记录,都整理在此】
- 姿态估计之Yaw Pitch Roll
- Charles做弱网测试
- bmp 图片格式读入 cv::Mat 的 C++ 实现
- win10系统字体 chrome 修改苹果字体
- angular ui-bootstrap的Datepicker Popup组件问题总结
- 读Leveraging Unimodal Self-Supervised Learning for Multimodal AVSR论文
- scrapy安装时遇到问题怎么解决
- 原win7系统迁移到SSD固态硬盘
- 【疑难解决】通过网页访问EasyDSS报错出现“无法访问此网站”提示的排查过程