成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java 文件流壓縮文件踩過的坑

IT那活兒 / 1535人閱讀
Java 文件流壓縮文件踩過的坑

點擊上方“IT那活兒”,關(guān)注后了解更多精彩內(nèi)容??!

背景介紹

相信大家在開發(fā)的時候經(jīng)常用到文件流。對于生成多個文件或者需求方要求文件為壓縮包格式,這時就需要對文件進行壓縮,再通過sftp/ftp傳送文件。本次開發(fā)中就遇到一個壓縮文件的坑,下面來分享一下如何解決這個問題。

問題描述

在壓縮文件時我選擇的是使用JDK API中自帶的工具 類:java.util.zip.ZipEntry; java.util.zip.ZipOutput Stream進行壓縮。壓縮時正常,生成的文件拿到windows系統(tǒng)解壓也正常。
Windows環(huán)境下文件壓縮包內(nèi)的文件
但是在服務器用unzip命令正常解壓,壓縮包中的中文文件名亂碼。
unzip命令解壓壓縮包文件
修改解壓命令為:unzip -O gbk 解壓則屬于正常情況,說明壓縮文件時字符集出了問題。
unzip -O gbk命令解壓壓縮包文件

問題排查

在查看源碼之后發(fā)現(xiàn),java.util.zip.ZipOutput  Stream的字符集不可修改,雖然網(wǎng)上有修改源碼的方式解決此問題,但是這樣做不僅麻煩,而且不太符合開發(fā)規(guī)則。
java.util.zip.ZipOutputStream源碼

解決方案

在試過多種文件流之后,最終總結(jié)出一種較為簡單的解決方案:使用apache包下的工具類org.apache.commons.compress.archivers.zip;
org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream
org.apache.commons.compress.archivers.zip工具類壓縮文件
用修改后的工具類生成的壓縮包,在windows和linux環(huán)境下都是正常的,用unzip直接解壓壓縮包則不會再出現(xiàn)亂碼情況。
org.apache.commons.compress.archivers.zip壓縮的文件解壓
雖然這個問題不是很大,但在我們平時開發(fā)的時候應該還是經(jīng)常會遇見,不細心的話,這樣的問題可能要找很久。平時多積累一點,在下次遇到類似的問題也會提供我們解決思路。

本 文 原 創(chuàng) 來 源:IT那活兒微信公眾號(上海新炬王翦團隊)


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129694.html

相關(guān)文章

  • Maven踩過的坑

    摘要:采用了一種被稱之為概念來管理項目,所有的項目配置信息都被定義在一個叫做的文件中,通過該文件,可以管理項目的整個聲明周期,包括編譯,構(gòu)建,測試,發(fā)布,報告等等。目前下絕大多數(shù)項目都已經(jīng)采用進行管理。 前言:對于微軟技術(shù)死忠的筆者來說,學習JAVA靈活又復雜的技術(shù)是件多么痛苦的事,開始想念我大微軟簡單的開發(fā)環(huán)境搭建以及完整詳盡的開發(fā)文檔,還有那一看就懂的案例教程了...可是為了工作,依舊不...

    cgspine 評論0 收藏0
  • 落地 Spring Could 所踩過的坑(一)eureka開啟驗證后無法連接注冊中心

    摘要:問題描述今天遇到個問題,的端和端本來已經(jīng)聯(lián)通成功,服務注冊發(fā)現(xiàn)都正常。后來開啟了驗證功能,端向端注冊服務時,需要驗證用戶名和密碼,問題就出現(xiàn)了。 問題描述 今天遇到個問題,Eureka的Server端和Client端本來已經(jīng)聯(lián)通成功,服務注冊、發(fā)現(xiàn)都正常。后來開啟了驗證功能,Client端向Server端注冊服務時,需要驗證用戶名和密碼,問題就出現(xiàn)了。 Client端無法向Server...

    Thanatos 評論0 收藏0
  • 【渣渣程序員踩過的坑】PHP的hash_hmac簽名加密,PHP迷一樣的base64_encode

    摘要:如何獲取受支持的算法清單,請參見。要進行哈希運算的消息。使用生成信息摘要時所使用的密鑰。設(shè)置為輸出原始二進制數(shù)據(jù),設(shè)置為輸出小寫進制字符串。 介紹一下問題的背景: 本人一枚小小PHPer,有一天公司的Java找到我,讓我?guī)兔懸粋€接口的Demo,心想:‘最喜歡寫接口了,來來來來!’,于是Java就帶著Java版Demo來了,大概看了一遍,具體涉及以下幾點:(不想了解的看最后一部分,就好...

    Rocture 評論0 收藏0
  • 【渣渣程序員踩過的坑】PHP的hash_hmac簽名加密,PHP迷一樣的base64_encode

    摘要:如何獲取受支持的算法清單,請參見。要進行哈希運算的消息。使用生成信息摘要時所使用的密鑰。設(shè)置為輸出原始二進制數(shù)據(jù),設(shè)置為輸出小寫進制字符串。 介紹一下問題的背景: 本人一枚小小PHPer,有一天公司的Java找到我,讓我?guī)兔懸粋€接口的Demo,心想:‘最喜歡寫接口了,來來來來!’,于是Java就帶著Java版Demo來了,大概看了一遍,具體涉及以下幾點:(不想了解的看最后一部分,就好...

    henry14 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<