日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java解压_Java ZIP压缩和解压缩文件(解决中文文件名乱码问题)

發布時間:2024/9/3 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java解压_Java ZIP压缩和解压缩文件(解决中文文件名乱码问题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JDK中自帶的ZipOutputStream在壓縮文件時,如果文件名中有中文,則壓縮后的

zip文件打開時發現中文文件名變成亂碼.

解決的方法是使用apache-ant-zip.jar包(見附件)中的ZipOutputStream和ZipEntry.

即,導入類:

import org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipOutputStream;

并且注意,壓縮之前調用ZipOutputStream的out.setEncoding(System.getProperty("sun.jnu.encoding"));方法,

系統參數sun.jnu.encoding表示獲取當前系統中的文件名的編碼方式.這里將ZipOutputStream的文件名編碼方式

設置成系統的文件名編碼方式.

解壓時,直接使用JDK原來的ZipInputStream即可.

但是有個需要注意的地方是,在讀取ZIP文件之前,需要設置:

System.setProperty("sun.zip.encoding", System.getProperty("sun.jnu.encoding"));

將系統的ZIP編碼格式設置為系統文件名編碼方式,否則解壓時報異常.

(網上,還有修改ZipInputStream源碼的方式貌似太麻煩了,參考:http://zwllxs.iteye.com/blog/871260)

ZIP代碼參考http://szhnet.iteye.com/blog/199059,有修改.

package io;

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.zip.CRC32;

import java.util.zip.CheckedOutputStream;

import org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipOutputStream;

public class Zip

{

static final int BUFFER = 8192;

public Zip()

{

}

private static void compress(File file, ZipOutputStream out, String basedir)

{

/* 判斷是目錄還是文件 */

if (file.isDirectory())

{

// System.out.println("壓縮:" + basedir + file.getName());

compressDirectory(file, out, basedir);

}

else

{

// System.out.println("壓縮:" + basedir + file.getName());

compressFile(file, out, basedir);

}

}

/** 壓縮一個目錄 */

private static void compressDirectory(File dir, ZipOutputStream out, String basedir)

{

if (!dir.exists()) return;

File[] files = dir.listFiles();

for (int i = 0; i < files.length; i++)

{

/* 遞歸 */

compress(files[i], out, basedir + dir.getName() + "/");

}

}

/** 壓縮一個文件 */

private static void compressFile(File file, ZipOutputStream out, String basedir)

{

if (!file.exists())

{

return;

}

try

{

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));

ZipEntry entry = new ZipEntry(basedir + file.getName());

out.putNextEntry(entry);

int count;

byte data[] = new byte[BUFFER];

while ((count = bis.read(data, 0, BUFFER)) != -1)

{

out.write(data, 0, count);

}

bis.close();

}

catch (Exception e)

{

throw new RuntimeException(e);

}

}

public static void zip(String srcPathName, String zipFileName)

{

File file = new File(srcPathName);

File zipFile = new File(zipFileName);

if (!file.exists()) throw new RuntimeException(srcPathName + "不存在!");

try

{

FileOutputStream fileOutputStream = new FileOutputStream(zipFile);

CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32());

ZipOutputStream out = new ZipOutputStream(cos);

out.setEncoding(System.getProperty("sun.jnu.encoding"));//設置文件名編碼方式

String basedir = "";

compress(file, out, basedir);

out.close();

}

catch (Exception e)

{

throw new RuntimeException(e);

}

}

public static void main(String[] args)

{

Zip.zip("D:\\D\\dll", "D:\\D\\dll.zip");

}

}

UnZip代碼:

package io;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.zip.ZipEntry;

import java.util.zip.ZipInputStream;

public class UnZip

{

public static void unzip(String zipFilePath, String destDir)

{

System.setProperty("sun.zip.encoding", System.getProperty("sun.jnu.encoding")); //防止文件名中有中文時出錯

//System.out.println(System.getProperty("sun.zip.encoding")); //ZIP編碼方式

//System.out.println(System.getProperty("sun.jnu.encoding")); //當前文件編碼方式

//System.out.println(System.getProperty("file.encoding")); //這個是當前文件內容編碼方式

File dir = new File(destDir);

// create output directory if it doesn't exist

if (!dir.exists()) dir.mkdirs();

FileInputStream fis;

// buffer for read and write data to file

byte[] buffer = new byte[1024];

try

{

fis = new FileInputStream(zipFilePath);

ZipInputStream zis = new ZipInputStream(fis);

ZipEntry ze = zis.getNextEntry();

while (ze != null)

{

String fileName = ze.getName();

File newFile = new File(destDir + File.separator + fileName);

//System.out.println("Unzipping to " + newFile.getAbsolutePath());

// create directories for sub directories in zip

new File(newFile.getParent()).mkdirs();

FileOutputStream fos = new FileOutputStream(newFile);

int len;

while ((len = zis.read(buffer)) > 0)

{

fos.write(buffer, 0, len);

}

fos.close();

// close this ZipEntry

zis.closeEntry();

ze = zis.getNextEntry();

}

// close last ZipEntry

zis.closeEntry();

zis.close();

fis.close();

}

catch (IOException e)

{

e.printStackTrace();

}

}

public static void main(String[] args)

{

String zipFilePath = "D:\\D\\dll.zip";

String destDir = "D:\\D\\dll_zip";

UnZip.unzip(zipFilePath, destDir);

}

}

總結

以上是生活随笔為你收集整理的java解压_Java ZIP压缩和解压缩文件(解决中文文件名乱码问题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 激情内射亚洲一区二区三区爱妻 | 在线视频免费观看 | 国产精品美女一区 | 亚洲天堂性 | 久久久av电影| 永久免费毛片 | 久久不卡视频 | 在线看免费av | 欧美成人精品欧美一级 | 日韩r级电影在线观看 | 国产在线不卡av | 成人尤物| 婷婷亚洲精品 | 两性午夜免费视频 | 秋霞福利 | av噜噜色 | 久久99久久99精品 | 五月天激情视频在线观看 | 欧美激情一二三 | 久久怡红院 | 日韩黄页网站 | 国产精品久久久 | 欧美高清精品 | 国产欧美另类 | 免费网站黄色 | 一区二区三区av夏目彩春 | 成年人网站在线 | 夜色88v精品国产亚洲 | 黄色av网站在线免费观看 | 日日干视频 | 亚洲欧美视频在线播放 | 亚洲一区二区在线观看视频 | 老女人黄色片 | 日韩精品一 | 国产精品一区二区电影 | 插综合 | 欧美 日韩 国产一区 | 日产国产亚洲精品系列 | 超碰青娱乐 | av黄色在线看 | 亚洲经典一区 | 婷婷激情丁香 | 日韩精品欧美激情 | 中文字幕 日韩有码 | 麻豆视频一区二区 | 国产成人麻豆免费观看 | 久色精品视频 | 亚洲一区二区小说 | 一区二区久久久 | 夜间福利网站 | 日本视频免费 | 日韩一级视频在线观看 | 亚洲第一毛片 | 久久一区二区视频 | 国产欧美日韩精品在线观看 | 欧洲性开放大片 | 国产操人 | 久久久久久人妻一区二区三区 | 丰满放荡岳乱妇91ww | 成人在线免费视频播放 | 欧美综合一区二区 | 极品美女av | 老色批永久免费网站www | 青娱乐国产 | 日韩一级免费毛片 | 久久青娱乐 | 男生和女生一起差差差很痛的视频 | 老头老夫妇自拍性tv | 国产精品xxxxxx| 在线观看中文字幕码 | 国产成人精品无码免费看夜聊软件 | xxxx69视频| 免费看黄网站在线观看 | 国产无遮挡一区二区三区毛片日本 | 中文字幕精品一区二区三区精品 | 成人私密视频 | 国产精品久久久爽爽爽麻豆色哟哟 | 久久久在线视频 | 2019毛片 | 秋霞影院午夜丰满少妇在线视频 | 丰满岳跪趴高撅肥臀尤物在线观看 | 国产色无码精品视频国产 | 青青青免费视频观看在线 | avwww.| 美女在线观看视频 | 精品人妻无码在线 | 国产91精品欧美 | 国产黄色www| 综合婷婷 | 中文字幕在线视频观看 | 中文字幕一区二区三区人妻不卡 | 日韩精品在线视频观看 | 精品国产av无码 | 中国特级黄色片 | 欧美亚洲综合久久 | 免费av播放| 97在线播放 | 欧美一级黄色录像 | 亚洲成人av网址 |