国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

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

點擊上方“IT那活兒”,關注后了解更多精彩內容!!

背景介紹

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

問題描述

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

問題排查

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

解決方案

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

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


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129694.html

相關文章

  • Maven踩過的坑

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

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

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

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

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

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

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

    henry14 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

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