1、 需求

我想把资源文件先加密成压缩文件,然后同时创建每个加密压缩文件同名的文件夹,同时需要把这个加密文件拷贝到这个同名的文件夹,然后还需要把一个图片和一个文本文档同时放进这个文件夹,然后在不加密压缩这个文件夹,上传资源到百度网盘。

2、思路

1)、windows环境用python来实现,能实现生成同名文件夹,然后拷贝文件的时候中文名的文件拷贝都文件夹有问题,估计是编码格式不对,对python不是很熟悉,然后放弃python来处理。

2)、用java来实现,遍历加密文件,然后创建同名(不带后缀)的文件夹,然后把这个加密文件拷贝到这个文件夹,然后删除加密文件,再拷贝图片和文本到这个加密文件夹。

3、具体代码实现过程

1)、批量加密文件

windows环境批量加密文件,我们在需要加密的文件目录新建1.bat文件,内容如下

for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%%~dpnX.7z" "%%X" -pcch1233nxecc -mhe -mx=0

注意这里-p后面是密码,这里的密码是cch1233nxecc,用户可以自己设置,点击1.bat就能加密批量压缩。

2)、把压缩成7z的文件手动拿出来,放到一个文件夹里面去,我放在这个目录

F:\didi1\all11_30\C++

3)、用java代码实现创建文件夹,然后放拷贝文件进去,然后删除加密文件,然后拷贝具体图片和文本文档到这个文件夹,解压密码图片和文本地址如下

F:\\didi1\\all11_30\\解压密码.png
F:\\didi1\\all11_30\\计算机40多个方向1000多个电子书.txt

代码实现如下

package com.chenyu;import java.io.File;public class Test {public static void main(String[] args)  {System.out.println("chen"); String path = "F:\\didi1\\all11_30\\C++";File decodePwdPngFile = new File("F:\\didi1\\all11_30\\解压密码.png");File txtFile = new File("F:\\didi1\\all11_30\\计算机40多个方向1000多个电子书.txt");FileUtil.handleFile(path, decodePwdPngFile, txtFile);}}

FileUtil.java文件如下

package com.chenyu;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.channels.FileChannel;public class FileUtil {/*** 创建新的文件夹* @param file* @return*/public static String getNewDirectoryPath(File file) {if (file == null)return "chenyu";String dirPath = file.getAbsolutePath() + File.separator + file.getName();if (dirPath.contains(".")) {int index = dirPath.indexOf('.');dirPath = dirPath.substring(0, index);} else {dirPath = dirPath + "1";}return dirPath;}/*** 处理文件,创建文件夹,然后拷贝文件进去* @param path*/public static void handleFile(String path, File decodePwdPngFile, File txtFile) {if (path == null || "".equals(path) || decodePwdPngFile == null || txtFile == null)return;File file = new File(path);if (!file.exists())return;File[] files = file.listFiles();if (files == null || files.length == 0)return;try {for (File childFile : files) {if (childFile.isDirectory()) {System.out.println("文件夹路径是:" + childFile.getAbsolutePath());handleFile(childFile.getAbsolutePath(), decodePwdPngFile, txtFile);} else {System.out.println("文件路径是:" + childFile.getAbsolutePath());if (childFile.getAbsolutePath() == null)return;if (childFile.getName() == null)return;//得到新的目录String dirPath = getNewDirectoryPath(childFile);System.out.println("dirPath路径是:" + dirPath);File fileDir = new File(dirPath);//创建新的目录if (!fileDir.exists()) {fileDir.mkdirs();}//构建资源zip文件File fileTmp = new File(dirPath, childFile.getName());if (!fileTmp.exists()) {fileTmp.createNewFile();}//复制资源zip文件到新的文件夹copyFile(childFile, fileTmp);//删除zip文件childFile.delete();//拷贝图片到这个dirPath目录来File decodePwdPng = new File(dirPath, "解压密码.png");if (!decodePwdPng.exists()) {decodePwdPng.createNewFile();}copyFile(decodePwdPngFile, decodePwdPng);//拷贝txt文件到这个dirPath目录来File newTxtFile = new File(dirPath, "计算机40多个方向1000多个电子书.txt");if (!newTxtFile.exists()) {newTxtFile.createNewFile();}copyFile(txtFile, newTxtFile);}}} catch (Exception e) {e.printStackTrace();}}/*** 文件复制* @param srcFile* @param dstFile* @throws IOException*/public static void copyFile(File srcFile, File dstFile) throws IOException {if (srcFile == null || !srcFile.exists()) {return;}if (dstFile == null || !dstFile.exists()) {return;}FileInputStream fileIns = null;FileOutputStream fileOuts = null;FileChannel source = null;FileChannel destination = null;try {fileIns = new FileInputStream(srcFile);fileOuts = new FileOutputStream(dstFile);source = fileIns.getChannel();destination = fileOuts.getChannel();destination.transferFrom(source, 0, source.size());} catch (Exception e) {e.printStackTrace();} finally {if (fileIns != null)fileIns.close();if (fileOuts != null)fileOuts.close();if (source != null)source.close();if (destination != null)destination.close();}}
}

控制台打印

chen
文件路径是:F:\didi1\all11_30\C++\C++ Primer Plus中文版.7z
dirPath路径是:F:\didi1\all11_30\C++\C++ Primer Plus中文版
文件路径是:F:\didi1\all11_30\C++\C专家编程.7z
dirPath路径是:F:\didi1\all11_30\C++\C专家编程
文件路径是:F:\didi1\all11_30\C++\C和指针(第二版)高清.7z
dirPath路径是:F:\didi1\all11_30\C++\C和指针(第二版)高清
文件路径是:F:\didi1\all11_30\C++\C语言深度解剖.7z
dirPath路径是:F:\didi1\all11_30\C++\C语言深度解剖
文件路径是:F:\didi1\all11_30\C++\C陷阱与缺陷.7z
dirPath路径是:F:\didi1\all11_30\C++\C陷阱与缺陷
文件路径是:F:\didi1\all11_30\C++\Effective C  中文版.7z
dirPath路径是:F:\didi1\all11_30\C++\Effective C  中文版
文件路径是:F:\didi1\all11_30\C++\Effective C++(第三版中文版).7z
dirPath路径是:F:\didi1\all11_30\C++\Effective C++(第三版中文版)
文件路径是:F:\didi1\all11_30\C++\Effective STL(中文版).7z
dirPath路径是:F:\didi1\all11_30\C++\Effective STL(中文版)
文件路径是:F:\didi1\all11_30\C++\LinuxC编程一站式学习.7z
dirPath路径是:F:\didi1\all11_30\C++\LinuxC编程一站式学习
文件路径是:F:\didi1\all11_30\C++\More Effective C++.7z
dirPath路径是:F:\didi1\all11_30\C++\More Effective C++
文件路径是:F:\didi1\all11_30\C++\STL源码剖析(侯捷译).7z
dirPath路径是:F:\didi1\all11_30\C++\STL源码剖析(侯捷译)
文件路径是:F:\didi1\all11_30\C++\UNIX编程艺术(中文).7z
dirPath路径是:F:\didi1\all11_30\C++\UNIX编程艺术(中文)
文件路径是:F:\didi1\all11_30\C++\中文版:C++Primer(第三版).7z
dirPath路径是:F:\didi1\all11_30\C++\中文版:C++Primer(第三版)

这里就可以得到我们的结果了

但是我们还需要再把这个文件夹批量不加密压缩,我们依然还是新建2.bat,内容如下

for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\"

点击2.bat文件,效果如下

这里的内容就是我们需要的内容,然后我们需要批量单个上传,我有工具,非常方便。

windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。相关推荐

  1. python根据文件名打标签_使用python将图片按标签分入不同文件夹的方法

    给定图像集如下,所有类别的图片均在一个文件夹内: 给定与图片名相匹配的表格,声明每张图片对应的类别(共有20个类别): 那么,如何根据表格中所给的类别将图片分入对应的文件夹内呢?以我的情况为例,我想将 ...

  2. C# 让你解决方案乱七八糟的DLL放入指定文件夹

    C# 让你解决方案乱七八糟的DLL放入指定文件夹 参考文章: (1)C# 让你解决方案乱七八糟的DLL放入指定文件夹 (2)https://www.cnblogs.com/Dinnerbone/p/1 ...

  3. java resource放入的文件没有生成在classes中_快速部署版@开源在线考试系统一键生成各种题型试卷且实时判卷...

    首先声明此项目来自开源网,小编也是爱好者: 阅读本文之前相信已经阅读过[开源在线考试系统一键生成各种题型试卷且可以实时判卷] 开源在线考试系统一键生成各种题型试卷且可以实时判卷 本文分享快速部署版ja ...

  4. 将图片资源放入 html 文件中

    在部分使用 html 文件的场景,有图片需要显示,但是希望是单文件形式存在,可以使用如下方式将图片放入 html 源文件中: <img src="data:image/png;base ...

  5. python批量读取dat文件_python编写Windows环境下批量修改文件名

    在日常编程工作中我们经常需要对文件进行操作,而文件一般都是由文件名和扩展名组成的.比如我们经常需要把.dat 格式 转化成 .txt格式,把png改成jgp格式等等.这里我们就教大家如何利用PYTHO ...

  6. style 放入css文件失效_React中使用CSS的7种方式

    来源 | http://www.fly63.com/article/detial/1961 1.在组件中直接使用style 不需要组件从外部约会css文件,直接在组件中书写. import react ...

  7. java resource放入的文件没有生成在classes中_JAVA程序员学习笔记----mybatis深入剖析...

    Java中提到持久层框架,相信没有人不知道mybatis的存在,相对于JDBC她多了一份干练(jdbc工作量大),相对于Hibernate她又多了一份灵动(HQL虽然方便,但太呆板).今天我们就一起走 ...

  8. 服务器被放入后门文件,服务器被***了怎么办 rkhunter的简单安装及检测后门

    被***了,查看了下/var/log/messages和last都已经清理. sshd : * : spawn /bin/echo %c %d | mail -s '标题'邮箱地址 --->邮件 ...

  9. html同时播放多个文件夹,怎么把很多文件一起同时放入一个文件夹内

    2005-07-28 怎样才能把想要的资料放到我的文件夹里我 最简单的方法是点文件选项,选择另存为时会跳出一个画面,如图001,这时你可以找到"保存在",后面就是你想存放文件的路径 ...

最新文章

  1. android studio 图片的命名规则
  2. Windows10 Postgres11 安装 The Database cluster initialisation failed
  3. python爬去朋友圈_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。
  4. 基于vue-cli的vuex配置
  5. 在html中标记bdo,HTML_HTML非常用标签 optgroup、sub、sup和bdo示例代码,optgroup 用在select 标记中 可以 - phpStudy...
  6. 金蝶财务软件有哪些缺点
  7. 杭州地铁四期极有可能被砍掉一部分线路,可能是某条新建线路,或者是某条延伸段
  8. Atitit q2016 q0 doc list on home ntpc.docx
  9. 我教你写Makefile,你给我介绍Girlfriends.
  10. java string 加法_java 对String 加法计算
  11. 数据库三大范式、BC范式、第四范式
  12. ElasticSearch索引基本操作POST PUT GET DELETE
  13. 上拉电阻和下拉电阻判断
  14. 为什么选择Opera而不是火狐
  15. Abaqus中批量对节点施加集中力荷载
  16. 【Metaverse系列一】元宇宙的奥秘
  17. 移动硬盘不小心格式化怎么恢复?
  18. maya python插件_Maya动画批量重定向插件及Python开发插件笔记
  19. 学习笔记 - CFA 权益 2
  20. aggregate和aggregateBy的区别

热门文章

  1. ASP.NET Core 实现基于 ApiKey 的认证
  2. .NET6之MiniAPI(七):中间件
  3. 在传统行业做数字化转型之最终篇
  4. 64岁Python之父加入微软 | 谁说大龄程序员无出路
  5. 如何在ASP.NetCore增加文件上传大小
  6. C#实践设计模式原则SOLID
  7. 扫盲消息队列 | 消息中间件 | Kafka
  8. 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[中篇]:请求响应
  9. 中国.NET:东莞+长沙.NET俱乐部现场花絮及合肥、苏州、上海等地活动预
  10. 如何测试 ASP.NET Core Web API