java 文件解压
2011-12-22 18:58
197 查看
可以解决包含中文文件夹的zip包解压的问题
/**
* 解压缩zipFile
* @param file 要解压的zip文件对象
* @param outputDir 要解压到某个指定的目录下
* @throws IOException
*/
public void unzip(String zipFileName, String outputDir) throws IOException {
try {
BufferedOutputStream bos = null;
// 创建输入字节流
FileInputStream fis = new FileInputStream(zipFileName);
// 根据输入字节流创建输入字符流
BufferedInputStream bis = new BufferedInputStream(fis);
// 根据字符流,创建ZIP文件输入流
ZipInputStream zis = new ZipInputStream(bis);
// zip文件条目,表示zip文件
ZipEntry entry;
// 循环读取文件条目,只要不为空,就进行处理
while ((entry = zis.getNextEntry()) != null) {
int count;
byte date[] = new byte[2048];
// 如果条目是文件目录,则继续执行
if (entry.isDirectory()) {
continue;
} else {
int begin = zipFileName.lastIndexOf("\\") + 1;
int end = zipFileName.lastIndexOf(".") + 1;
String zipRealName = zipFileName.substring(begin, end);
bos = new BufferedOutputStream(new FileOutputStream(this
.getRealFileName(outputDir + "\\" + zipRealName,
entry.getName())));
while ((count = zis.read(date)) != -1) {
bos.write(date, 0, count);
}
bos.flush();
bos.close();
}
}
zis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private File getRealFileName(String zippath, String absFileName) {
String[] dirs = absFileName.split("/", absFileName.length());
// 创建文件对象
File file = new File(zippath);
if (dirs.length > 1) {
for (int i = 0; i < dirs.length - 1; i++) {
// 根据file抽象路径和dir路径字符串创建一个新的file对象,路径为文件的上一个目录
file = new File(file, dirs[i]);
}
}
if (!file.exists()) {
file.mkdirs();
}
file = new File(file, dirs[dirs.length - 1]);
return file;
}
/**
* 解压缩zipFile
* @param file 要解压的zip文件对象
* @param outputDir 要解压到某个指定的目录下
* @throws IOException
*/
public void unzip(String zipFileName, String outputDir) throws IOException {
try {
BufferedOutputStream bos = null;
// 创建输入字节流
FileInputStream fis = new FileInputStream(zipFileName);
// 根据输入字节流创建输入字符流
BufferedInputStream bis = new BufferedInputStream(fis);
// 根据字符流,创建ZIP文件输入流
ZipInputStream zis = new ZipInputStream(bis);
// zip文件条目,表示zip文件
ZipEntry entry;
// 循环读取文件条目,只要不为空,就进行处理
while ((entry = zis.getNextEntry()) != null) {
int count;
byte date[] = new byte[2048];
// 如果条目是文件目录,则继续执行
if (entry.isDirectory()) {
continue;
} else {
int begin = zipFileName.lastIndexOf("\\") + 1;
int end = zipFileName.lastIndexOf(".") + 1;
String zipRealName = zipFileName.substring(begin, end);
bos = new BufferedOutputStream(new FileOutputStream(this
.getRealFileName(outputDir + "\\" + zipRealName,
entry.getName())));
while ((count = zis.read(date)) != -1) {
bos.write(date, 0, count);
}
bos.flush();
bos.close();
}
}
zis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private File getRealFileName(String zippath, String absFileName) {
String[] dirs = absFileName.split("/", absFileName.length());
// 创建文件对象
File file = new File(zippath);
if (dirs.length > 1) {
for (int i = 0; i < dirs.length - 1; i++) {
// 根据file抽象路径和dir路径字符串创建一个新的file对象,路径为文件的上一个目录
file = new File(file, dirs[i]);
}
}
if (!file.exists()) {
file.mkdirs();
}
file = new File(file, dirs[dirs.length - 1]);
return file;
}
相关文章推荐
- java用ant.jar解压zip格式的文件时,中文名称的文件的文件名乱码问题
- java解压缩zip文件,java创建zip文件,java压缩文件,java解压文件,用到ant.jar解决汉字乱码
- java 将文件/目录下 zip压缩文件解压并删除压缩包
- Java文件的压缩和解压操作
- java解压7-zip压缩文件
- java解压zip文件并上传到服务器
- [JAVA100例]040、压缩和解压文件(java100例)
- Java压缩与解压文件的简单使用
- Java 解压压缩文件,springMVC 接收压缩文件
- MyEclipse 安装(或解压)后运行报“An error has occurred. See the log file”;在日志文件报错:java.lang.RuntimeException
- java解压文件
- Java解压、压缩文件
- Java解压Jar文件
- java解压zip、rar(多级文件)
- Java无需解压直接读取Zip文件和文件内容
- java使用7-zip解压带密码的大文件
- Java实现文件压缩与解压[zip格式,gzip格式]
- Java中文件的压缩与解压
- java解压rar文件
- Java方法进行解压/生成有密码保护的压缩文件(zip格式)