最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java調(diào)用7zip解壓壓縮包的實(shí)例

 更新時(shí)間:2017年09月26日 09:12:43   作者:李?lèi)?ài)戴  
下面小編就為大家?guī)?lái)一篇java調(diào)用7zip解壓壓縮包的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

前言

最近的項(xiàng)目中需要用到解壓縮包的功能,客戶(hù)給出的壓縮包的格式主要是rar和zip,因此就打算使用java調(diào)用7zip的命令行進(jìn)行解壓文件,本文主要記錄一下實(shí)現(xiàn)的過(guò)程以及其中遇到的問(wèn)題。

7zip命令行

7z <command> [<switches>...] <archive_name> [<file_names>...][<@listfiles...>]

7z的commands中包含添加文件到壓縮包、從壓縮包中刪除文件以及提取文件等等多個(gè)命令,在這里我就不多贅述,有興趣的可以在7zip的安裝目錄使用cmd運(yùn)行7z.exe查看具體的命令。

今天我們要做的就是使用密碼將壓縮包中的文件提取出來(lái),具體的命令如下:

7z x 壓縮文件源路徑 -o要解壓的路徑 -aoa -bse1 -p密碼

• x : 表示從壓縮包中提取文件

• -aoa : ao表示覆蓋模式,最后的a表示直接覆蓋現(xiàn)有文件而不需要任何提示

• -bs < o|e|p > < 0|1|2 >:set output stream for output/error/progress line

-bs命令其實(shí)我沒(méi)有太明白,字面的意思大概是說(shuō)為輸出/錯(cuò)誤/進(jìn)程行設(shè)置輸出流,如果不設(shè)置-bse1屬性,當(dāng)解壓縮出現(xiàn)錯(cuò)誤,例如文件找不到時(shí),錯(cuò)誤提示就會(huì)出現(xiàn)在cmd窗口中而不是生成的log文件中,因此必須加上-bse1命令

java通過(guò)cmd調(diào)用7zip解壓

String filePath = "F:\\test\\新建 文本 文檔.rar";
//將文件名稱(chēng)中的所有空格都替換為帶有雙引號(hào)的空格
filePath = filePath.replaceAll(" ", "\" \""); 

String command = "cmd /c start /B D:/工具/7zip/7-Zip/7z.exe x "+filePath+" -oF:/test/ -aoa -bse1 -p123 >F:/test/1.txt";
System.out.println(command);
Runtime.getRuntime().exec(command);

cmd命令解釋

• cmd /c start 7z.exe 表示會(huì)啟動(dòng)7z來(lái)執(zhí)行后面的命令,7z啟動(dòng)以后原來(lái)的cmd窗口會(huì)關(guān)閉

• cmd /k start 7z.exe 表示會(huì)啟動(dòng)7z來(lái)執(zhí)行后面的命令,7z啟動(dòng)以后原來(lái)的cmd窗口不會(huì)關(guān)閉

• /B 表示啟動(dòng)應(yīng)用程序,但是并不創(chuàng)建新的窗口

通過(guò)以上的代碼就可以解壓完成壓縮包文件,如果要知道解壓的密碼是否正確或者壓縮包是否損壞等信息,可以通過(guò)獲取生成txt日志文件的內(nèi)容來(lái)得知,這個(gè)不在本篇范圍之后,后續(xù)再說(shuō)。

遇到的問(wèn)題

7z.exe文件路徑找不到

出現(xiàn)該問(wèn)題是由于7zip的安裝路徑中存在空格

解決方案:

• 選擇7zip安裝路徑,不要安裝在有空格的路徑中

• 將路徑中的空格使用雙引號(hào)引起來(lái),如C:“Program Files”\7-Zip或者“C:\Program Files\7-Zip”或者C:\Program“ ”Files\7-Zip

文件路徑中存在連續(xù)多個(gè)空格導(dǎo)致文件找不到

出現(xiàn)該問(wèn)題是由于

Runtime.getRuntime().exec(command)

方法在執(zhí)行過(guò)程中,會(huì)將文件路徑中的多個(gè)連續(xù)空格轉(zhuǎn)換為單個(gè)空格,這種情況在文件全路徑外面加上雙引號(hào)也是不管用的

解決方案:

• 替換文件路徑中的空格,將每一個(gè)空格都替換為帶有雙引號(hào)的空格即可

以上這篇java調(diào)用7zip解壓壓縮包的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • DispatcherServlet處理器的適配和處理解析

    DispatcherServlet處理器的適配和處理解析

    這篇文章主要為大家介紹了DispatcherServlet的處理器的適配和處理流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Java對(duì)象在內(nèi)存中的布局是如何實(shí)現(xiàn)的?

    Java對(duì)象在內(nèi)存中的布局是如何實(shí)現(xiàn)的?

    Java對(duì)象在內(nèi)存中屬于oop-klass二分模型,即對(duì)象的實(shí)例數(shù)據(jù)和對(duì)象類(lèi)型的元數(shù)據(jù)(字段定義、方法、常量池等元數(shù)據(jù))是分開(kāi)存儲(chǔ)的.而由于JVM對(duì)對(duì)象內(nèi)相同寬度的字段分配在一起,所以只要指定了字段類(lèi)型分配的順序,就可以計(jì)算出每種類(lèi)型字段相對(duì)于當(dāng)前對(duì)象的偏移起始位置
    2021-06-06
  • SpringBoot實(shí)現(xiàn)郵件發(fā)送的示例代碼

    SpringBoot實(shí)現(xiàn)郵件發(fā)送的示例代碼

    電子郵件是—種用電子手段提供信息交換的通信方式,是互聯(lián)網(wǎng)應(yīng)用最廣的服務(wù)。本文詳細(xì)為大家介紹了SpringBoot實(shí)現(xiàn)發(fā)送電子郵件功能的示例代碼,需要的可以參考一下
    2022-04-04
  • Java?超詳細(xì)講解數(shù)據(jù)結(jié)構(gòu)中的堆的應(yīng)用

    Java?超詳細(xì)講解數(shù)據(jù)結(jié)構(gòu)中的堆的應(yīng)用

    堆首先是一個(gè)完全二叉樹(shù),堆分為小根堆和大根堆。小根堆,所有結(jié)點(diǎn)的左右子節(jié)點(diǎn)都不小于根節(jié)點(diǎn);大根堆,所有結(jié)點(diǎn)的左右子節(jié)點(diǎn)都不大于根節(jié)點(diǎn)。優(yōu)先級(jí)隊(duì)列(priorityQueue)底層就是一個(gè)小根堆
    2022-04-04
  • 解決Lombok使用@Builder無(wú)法build父類(lèi)屬性的問(wèn)題

    解決Lombok使用@Builder無(wú)法build父類(lèi)屬性的問(wèn)題

    這篇文章主要介紹了解決Lombok使用@Builder無(wú)法build父類(lèi)屬性的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Java?Hibernate中一對(duì)多和多對(duì)多關(guān)系的映射方式

    Java?Hibernate中一對(duì)多和多對(duì)多關(guān)系的映射方式

    Hibernate是一種Java對(duì)象關(guān)系映射框架,支持一對(duì)多和多對(duì)多關(guān)系的映射。一對(duì)多關(guān)系可以使用集合屬性和單向/雙向關(guān)聯(lián)來(lái)映射,多對(duì)多關(guān)系可以使用集合屬性和中間表來(lái)映射。在映射過(guò)程中,需要注意級(jí)聯(lián)操作、延遲加載、中間表的處理等問(wèn)題
    2023-04-04
  • Spring的Bean注入解析結(jié)果BeanDefinition詳解

    Spring的Bean注入解析結(jié)果BeanDefinition詳解

    這篇文章主要介紹了Spring的Bean注入解析結(jié)果BeanDefinition詳解,BeanDefinition描述了一個(gè)bean實(shí)例,擁有屬性值、構(gòu)造參數(shù)值和具體實(shí)現(xiàn)的其他信息,其是一個(gè)bean的元數(shù)據(jù),xml中配置的bean元素會(huì)被解析成BeanDefinition對(duì)象,需要的朋友可以參考下
    2023-12-12
  • 詳解JAVA序列化及實(shí)際應(yīng)用場(chǎng)景分析

    詳解JAVA序列化及實(shí)際應(yīng)用場(chǎng)景分析

    序列化就是將對(duì)象轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问?以實(shí)現(xiàn)對(duì)象持久化存儲(chǔ)到磁盤(pán)中,或者在網(wǎng)絡(luò)中傳輸,這篇文章介紹JAVA序列化及實(shí)際應(yīng)用場(chǎng)景分析,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • 一文了解mybatis的延遲加載

    一文了解mybatis的延遲加載

    本文主要為大家詳細(xì)介紹下mybatis的延遲加載,從原理上介紹下怎么使用、有什么好處能規(guī)避什么問(wèn)題。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-07-07
  • SpringBoot源碼分析之bootstrap.properties文件加載的原理

    SpringBoot源碼分析之bootstrap.properties文件加載的原理

    本文通過(guò)訪(fǎng)問(wèn)看到bootstrap.properties中的信息獲取到了,同時(shí)age也被application.properties中的屬性覆蓋掉了。加載順序到底是什么?為什么會(huì)覆蓋呢?我們接下來(lái)分析下吧
    2021-12-12

最新評(píng)論

米林县| 江山市| 五河县| 达州市| 吉林省| 武强县| 昔阳县| 皋兰县| 敦化市| 凤庆县| 祁阳县| 深水埗区| 米林县| 台南县| 桐乡市| 英山县| 河北区| 兰考县| 望城县| 徐闻县| 东莞市| 分宜县| 巴马| 巴中市| 浠水县| 灯塔市| 逊克县| 元阳县| 夹江县| 吉安县| 彭阳县| 怀远县| 旬阳县| 大庆市| 永仁县| 虹口区| 涪陵区| 泰州市| 镇巴县| 吉水县| 青神县|