package com.sinosoft.jbs.sevices.hxlife.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import org.apache.log4j.Logger;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Util {
// 日志对象
private static Logger log = Logger.getLogger(Util.class);
/**
* parse zip File xml content
*
* @param file
* @return
*/
public static String parseZIP(String file) {
if (null != file && !"".equals(file)) {
String suffix = file.substring(file.lastIndexOf('.') + 1, file
.length());
if ("zip".equals(suffix)) {
try {
InputStream ins = new FileInputStream(new File(file)); // URLConnection
// .getInputStream();
ZipInputStream zipInput = new ZipInputStream(ins);
@SuppressWarnings("unused")
ZipEntry zipEntry = null;
String xml = "";// content
BufferedReader in = null;
while ((zipEntry = zipInput.getNextEntry()) != null) {
/*
* byte[] buf = new byte[1024]; int len=-1;
*
* while ((len=zipInput.read(buf))!=-1) { xml+=new
* String(buf,0,len,oscode); }
*/
in = new BufferedReader(new InputStreamReader(zipInput,
"GBK"));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null) {
buffer.append(line);
}
xml = buffer.toString();
zipInput.closeEntry();
}
zipInput.close();
ins.close();
if (in != null) {
in.close();
}
return xml;
} catch (FileNotFoundException e) {
log.error("parse zip file FileNotFoundException:"
+ e.getMessage());
} catch (IOException e) {
log.error("parse zip file IOException:" + e.getMessage());
}
return null;
}
return null;
}
return null;
}
/**
* parse zip Stream xml content
*
* @param file
* @return
*/
public static String parseZIP(InputStream ins) {
if (null != ins) {
try {
ZipInputStream zipInput = new ZipInputStream(ins);
@SuppressWarnings("unused")
ZipEntry zipEntry = null;
String xml = "";// content
BufferedReader in = null;
while ((zipEntry = zipInput.getNextEntry()) != null) {
/*
* byte[] buf = new byte[1024]; int len=-1;
*
* while ((len=zipInput.read(buf))!=-1) { xml+=new
* String(buf,0,len,oscode); }
*/
in = new BufferedReader(new InputStreamReader(zipInput,
"GBK"));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null) {
buffer.append(line);
}
xml = buffer.toString();
zipInput.closeEntry();
}
zipInput.close();
ins.close();
if (in != null) {
in.close();
}
return xml;
} catch (FileNotFoundException e) {
log.error("parse zip file FileNotFoundException:"
+ e.getMessage());
} catch (IOException e) {
log.error("parse zip file IOException:" + e.getMessage());
}
return null;
}
return null;
}
/**
* base64 decryption
*
* @param x
* decryption message
* @return
*/
public static String base64Decoder(String x) {
BASE64Decoder decoder = new BASE64Decoder();
byte[] encode = null;
try {
encode = decoder.decodeBuffer(x);
} catch (IOException e) {
log.error("Decryption message error:" + e.getMessage());
return null;
}
return new String(encode);
}
/**
* base64 encryption
*
* @param x
* encryption message
* @return
*/
public static String base64Encoder(String x) {
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(x.getBytes());
}
}
分享到:
相关推荐
在Java编程中,`ZipInputStream`是用于读取和解压ZIP格式的压缩文件的核心类。然而,正如标题和描述中指出的,当ZIP文件包含带有中文文件名的条目时,使用`ZipInputStream`进行解压可能会遇到问题。这个问题通常表现...
以下将详细阐述如何解决Java压缩中文乱码问题。 首先,我们要理解为什么会出现乱码。在Java中,`java.util.zip`类库使用的是默认的平台字符集,而不是通用的Unicode(UTF-8)编码。因此,如果源文件包含中文字符且...
### Java中压缩与解压——中文文件名乱码解决办法 #### 一、问题背景及原理分析 在Java中处理文件的压缩与解压时,经常会遇到中文文件名出现乱码的问题。这个问题主要源于Java中默认使用的编码方式与实际文件名...
在Java编程中,处理压缩和解压缩ZIP文件是一项常见的任务,尤其当文件中包含中文字符时,可能会遇到中文乱码的问题。这是因为Java的标准库在处理非ASCII编码时可能存在不足。本篇文章将详细介绍如何使用Java标准库...
在IT行业中,文件的压缩和解压是一项...总的来说,理解和掌握文件压缩和解压的原理,以及处理中文乱码的方法,对Java开发者来说至关重要,这能够帮助他们有效地处理各种文件操作需求,尤其是涉及到多语言环境的时候。
因此,当Java使用默认的ISO-8859-1编码读取ZIP文件时,中文文件名可能会出现乱码。 解决这个问题的关键在于正确地设置编码。以下是一些常用的方法: 1. 使用`ZipInputStream`和`ZipEntry`: Java标准库提供了`...
为了解决这个问题,我们需要确保在读取ZIP文件时正确地设置字符编码。以下是一些关键步骤: 1. **设置正确的字符编码**:在创建`ZipInputStream`时,可以通过传递自定义的`Charset`对象来指定解压时使用的编码。...
例如,当读取ZIP文件中的中文文件名时,需要使用`java.util.zip.ZipInputStream`和`java.util.zip.ZipEntry`类,并指定UTF-8编码。 2. **Java内置API的局限性**:Java标准库中的`java.util.zip`包虽然提供了基本的...
当我们需要读取或提取ZIP文件中的内容,特别是在处理包含中文字符的文件名时,需要特别注意编码问题。下面将详细介绍如何使用Java来解压ZIP文件,并解决中文文件名的解压问题。 首先,Java提供了一个内置的`java....
对于解压缩,使用`ZipInputStream`来读取ZIP档案,并将其内容写入目标目录。同样,每个条目的名称也应正确解码为UTF-8。 ```java ZipInputStream zis = new ZipInputStream(new FileInputStream("archive.zip"),...
在不同的操作系统和文件系统中,对非ASCII字符(如中文字符)的支持方式不同,这可能导致乱码或无法正确读取文件。Java API本身提供了一些处理这种问题的方法,但需要正确理解和使用。 首先,我们要理解Java中的...
这是因为ZIP文件格式本身是支持Unicode编码的,但是Java的标准库在处理这些文件时默认使用了ISO-8859-1编码,这可能导致中文文件名显示为乱码或无法正确解压。 标题"根据java.util.zip源码修改zip支持中文"指的是...
本文将深入探讨如何使用Java在Android环境中处理这些任务,特别是解决中文文件名在压缩和解压缩过程中可能出现的乱码问题。 首先,让我们关注文件的下载和上传。在Android中,我们可以使用`java.net.URL`和`java...
本篇文章将详细探讨如何使用Java内置的类库来实现ZIP文件的压缩和解压缩,以及解决中文文件名出现乱码的问题。 首先,我们要了解Java中处理ZIP文件的核心类:`java.util.zip.ZipOutputStream` 和 `java.util.zip....
本文将深入探讨如何在Java中实现解压缩功能,以及解决在处理包含中文文件名时可能出现的乱码问题。 首先,Java提供了`java.util.zip`包,它包含了处理ZIP文件的相关类。我们主要使用`ZipInputStream`和`ZipEntry`来...
本主题将深入探讨如何使用Java来创建一个文件解压缩工具箱,特别关注支持ZIP和RAR格式,并解决中文乱码问题。首先,我们需要了解两个核心库:`java-unrar-1.7.0-1.jar` 和 `ant-1.8.2.jar`。 `java-unrar-1.7.0-1....
在Java中,我们可以使用内置的`java.util.zip`包来处理ZIP文件,这个包提供了`ZipInputStream`和`ZipOutputStream`等类来读取和创建ZIP文件。然而,如果你需要处理复杂的压缩需求,如保持文件的原始权限、处理符号...
综上所述,这个Java接口类解决了在解压ZIP和RAR文件时可能出现的乱码问题,通过自定义的解压方法,提供了稳定且兼容的解压缩功能。开发者可以方便地在自己的项目中集成这个接口,以便处理各种压缩文件。
本文将详细介绍如何使用`java.util.zip`包中的类来压缩文件及目录,并解决其中的一个常见问题——中文文件名或目录名的支持问题。 #### 一、Java自带压缩工具简介 Java标准库提供了`java.util.zip`包来处理文件的...
然而,这个包在处理包含中文文件名的ZIP文件时存在一些问题,可能会导致乱码或无法正确读取。 `java.util.zip`包中的`ZipOutputStream`和`ZipInputStream`是主要用来处理ZIP文件的类。`ZipOutputStream`用于创建新...