windows環境實現批量加密文件,并創建加密文件同名(不帶后綴)的文件夾,然后把加密文件和圖片和文本放入這個文件夾。

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文件,效果如下

這里的內容就是我們需要的內容,然后我們需要批量單個上傳,我有工具,非常方便。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285674.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285674.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285674.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

.NET7之MiniAPI(特別篇) :Preview5優化了JWT驗證(上)

在.NET7的Preview5中,優化了asp.net core中的JWT驗證,不用像以前繁瑣了,更重要的是帶來了一組生成Token的工具,可以讓開發人員或測試人員不需登錄獲取Token,而達到測試的目的。創建項目現在來看一下怎么使用&#xff0…

iOS - UTI

一、UTI概念 1、什么是UTI Uniform Type Identifier,是字符串,格式標識符。 根據UTI,可得到相應的其他類型的格式標識符。比如public.jpeg對應于: A four-character file type code (an OSType) of JPEGA filename extension of .…

【Inpho精品教程】任務一:Inpho預處理準備(Pix4d生成未畸變圖像、Pix4d生成相機參數文件)

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) Inpho軟對于初學者來說,可能不像pix4d、PhotoScan等那么得心應手,處理過程也稍微有些復雜。Inpho處理的是POS分離的照片,在新建工程之前,需要獲取相機參數、未畸變圖像等,而這些前期的工作一…

學習MongoDB(三) Add an Arbiter to Replica Set 集群中加入仲裁節點

Add an Arbiter to Replica Set 在集群中加入仲裁節點,當集群中主節點掛掉后負責選出新的主節點,仲裁節點也是一個mongo實力,但是它不存儲數據。 1、仲裁節點消耗很小的資源,而且不需要專用的服務器。 2、不能把仲裁節點安裝到集…

[轉]new Thread的弊端及Java四種線程池的使用

介紹new Thread的弊端及Java四種線程池的使用,對Android同樣適用。本文是基礎篇,后面會分享下線程池一些高級功能。 1、new Thread的弊端 執行一個異步任務你還只是如下new Thread嗎? new Thread(new Runnable() {Overridepublic void run() …

【Inpho精品教程】任務二:Inpho創建工程(創建項目、新建相機參數、導入照片、導入POS、生成航條、保存項目)

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) 在任務一中,我們做了Inpho創建工程前的數據預處理工作,獲取了未畸變的圖像、相機參數、Inpho支持的POS等數據,本文在此基礎之上,創建Inpho工程,主要步驟有:創建項目、新建相機參數、導入照片…

return view詳解

1、return View(); 返回值 類型:System.Web.Mvc.ViewResult將視圖呈現給響應的 View() 結果。 注釋 View() 類的此方法重載將返回一個具有空 ViewName 屬性的 ViewResult 對象。 如果你正在編寫控制器操作的單元測試,則需為那些不采用字符串視圖名稱的單…

C語言試題九十一之寫一個程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一項的絕對值小于10^-8為止。

1、題目 寫一個程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一項的絕對值小于10^-8為止。 2 、溫馨提示 C語言試題匯總里可用于計算機二級C語言筆試、機試、研究生復試中C程序設計科目、幫助C語言學者打好程序基礎、C語言基礎,鍛煉您的邏輯思維和解決問…

C# 切換中英文輸入法

本文經原作者授權以原創方式二次分享,歡迎轉載、分享。原文作者:唐宋元明清原文地址:https://www.cnblogs.com/kybs0/p/10298697.htmlC# 切換中英文輸入法在界面輸入時,有時需要限定輸入法。在不自定義正則表達式或者其它輸入處理…

[轉].NET 開源項目 Polly 介紹

今天介紹一個 .NET 開源庫:Polly,它是支持 .NET Core 的,目前在 GitHub 的 Star 數量已經接近 5 千,它是一個強大且實用的 .NET 庫。 Polly 介紹 官方對 Polly 的介紹是這樣的: Polly is a .NET resilience and tran…

「 劉一哥GIS」CSDN專業技術博文專欄目錄索引

劉一哥GIS 個人簡介:劉一哥,多年研究地圖學、地理信息系統、遙感、攝影測量和GPS等應用,精通ArcGIS等軟件的應用,精通多門編程語言,擅長GIS二次開發和數據庫系統開發,具有豐富的行業經驗,致力于…

memcached 和 redis 的區別與選擇

沒有必要過多的關注性能。由于Redis只使用單核,而Memcached可以使用多核,所以在比較上,平均每一個核上Redis在存儲小數據時比Memcached性能更高。而在100k以上的數據中,Memcached性能要高于Redis,雖然Redis最近也在存儲…

C語言試題九十之實現輸入一行字符,分別統計出其中英文字母、空格、數字和其他字符的個數。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 輸入一行字…

數據庫備份需要注意的

2019獨角獸企業重金招聘Python工程師標準>>> 1、PHPMYADMIN無法導出大數據表的 如果你的數據庫中有上百個數據表,并且有很多數據表記錄都超過了1G,還有很多INNODB數據表,這個時候用PHPMYADMIN導出,你就會發現恢復后可能…

在 .NET 6 中使用 dotnet format 格式化代碼

我不得不承認,在 code review 的時候,我花費了很多時間來研究 C# 的代碼格式問題,這是沒有太大意義的工作,我應該專注于其他事情,而不是觀察同事是否忘記格式化代碼,或者是使用了其他不同規則的代碼編輯器。…

【天工Godwork精品教程】任務一:創建工程(導入相片、編輯相機參數、導入POS)

無人機航測精品專欄鏈接:《無人機航空攝影測量精品教程》 【天工Godwork精品教程】任務一:創建工程(導入相片、編輯相機參數、導入POS) 【天工Godwork精品教程】任務二:導入控制點、POS權重設置、自由空三 【天工Godwork精品教程】任務三:刺像控點、空三平差、精度優化調…

[轉]數據庫事務ACID特性

ACID特性 數據庫管理系統中事務(transaction)的四個特性(分析時根據首字母縮寫依次解釋):原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性&#xff…

dotnet-exec 0.4.0 released

dotnet-exec 0.4.0 releasedIntrodotnet-exec 是一個 C# 程序的命令行小工具,可以用來運行一些簡單的 C# 程序而無需創建項目文件,而且可以自定義項目的入口方法,支持但不限于 Main 方法Install/Updatedotnet-exec 是一個 dotnet tool&#x…

【天工Godwork精品教程】任務二:導入控制點、POS權重設置、連接點分布檢查、自由空三

無人機航測精品專欄鏈接:《無人機航空攝影測量精品教程》 【天工Godwork精品教程】任務一:創建工程(導入相片、編輯相機參數、導入POS) 【天工Godwork精品教程】任務二:導入控制點、POS權重設置、自由空三 【天工Godwork精品教程】任務三:刺像控點、空三平差、精度優化調…

C語言試題九十二之輸入數據有多行,第一行是一個整數n,表示測試用例的個數,后面跟著n行 ,每行包括一個由字母和數字組成的字符串

? ?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 輸入 輸入數據有多行,第一行是一個整數n,表示測試用例的個數,后面跟著n行,每行包括一…