我现在把D:\tep\a.zip中的a.zip文件展开到E:\aa\ 目录下面.程序是这样写的:
ZipUtility zipUtility = new ZipUtility();
zipUtility.extract(tempFile, popupFile);
if (tempFile.exists()) {
tempFile.delete();
}执行这段程序后,我把tempFile这个文件删掉(也就是把a.zip文件删除),但是删除不掉tempFile(a.zip)文件,为什么???谢谢.其中ZipUtility 类中有这个方法:extract;
代码如下:
public class ZipUtility {
private String lcd = null;
/**
*
* @param File 要展开的ZIP file
* @param File 展开到哪个目录 文件
*/
public void extract(final File in, final File out) throws EAPLIException {
ZipFile zipFile = null;
try{
zipFile = new ZipFile(in);
}catch(IOException e){
} Enumeration enumeration = zipFile.entries();
while(enumeration.hasMoreElements()){
ZipEntry target = (ZipEntry)enumeration.nextElement();
File file = new File(out, target.getName()); // 目录文件是否存在,否则创建
if(target.isDirectory()){
if(!file.exists() || file.isFile()){
file.mkdirs();
}
continue;
}
String parentName = file.getParent();
if(parentName != null){
File directory = new File(parentName);
if(!directory.exists() || directory.isFile()){
directory.mkdirs();
}
}
// 进行展开
try{
BufferedInputStream inputStream = new BufferedInputStream(zipFile.getInputStream(target));
BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file));
int buffer;
while((buffer = inputStream.read()) != -1){
outputStream.write((byte)buffer);
}
outputStream.close();
inputStream.close();
}catch(IOException e){ }
}
}
}
ZipUtility zipUtility = new ZipUtility();
zipUtility.extract(tempFile, popupFile);
if (tempFile.exists()) {
tempFile.delete();
}执行这段程序后,我把tempFile这个文件删掉(也就是把a.zip文件删除),但是删除不掉tempFile(a.zip)文件,为什么???谢谢.其中ZipUtility 类中有这个方法:extract;
代码如下:
public class ZipUtility {
private String lcd = null;
/**
*
* @param File 要展开的ZIP file
* @param File 展开到哪个目录 文件
*/
public void extract(final File in, final File out) throws EAPLIException {
ZipFile zipFile = null;
try{
zipFile = new ZipFile(in);
}catch(IOException e){
} Enumeration enumeration = zipFile.entries();
while(enumeration.hasMoreElements()){
ZipEntry target = (ZipEntry)enumeration.nextElement();
File file = new File(out, target.getName()); // 目录文件是否存在,否则创建
if(target.isDirectory()){
if(!file.exists() || file.isFile()){
file.mkdirs();
}
continue;
}
String parentName = file.getParent();
if(parentName != null){
File directory = new File(parentName);
if(!directory.exists() || directory.isFile()){
directory.mkdirs();
}
}
// 进行展开
try{
BufferedInputStream inputStream = new BufferedInputStream(zipFile.getInputStream(target));
BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file));
int buffer;
while((buffer = inputStream.read()) != -1){
outputStream.write((byte)buffer);
}
outputStream.close();
inputStream.close();
}catch(IOException e){ }
}
}
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;public class ZipUtility {
private String lcd = null;
/**
*
* @param File 要展开的ZIP file
* @param File 展开到哪个目录 文件
*/
public void extract(final File in, final File out){
ZipFile zipFile = null;
try{
zipFile = new ZipFile(in);
}catch(IOException e){
} Enumeration enumeration = zipFile.entries();
while(enumeration.hasMoreElements()){
ZipEntry target = (ZipEntry)enumeration.nextElement();
File file = new File(out, target.getName()); // 目录文件是否存在,否则创建
if(target.isDirectory()){
if(!file.exists() || file.isFile()){
file.mkdirs();
}
continue;
}
String parentName = file.getParent();
if(parentName != null){
File directory = new File(parentName);
if(!directory.exists() || directory.isFile()){
directory.mkdirs();
}
}
// 进行展开
try{
BufferedInputStream inputStream = new BufferedInputStream(zipFile.getInputStream(target));
BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file));
int buffer;
while((buffer = inputStream.read()) != -1){
outputStream.write((byte)buffer);
}
outputStream.close();
inputStream.close();
}catch(IOException e){ }
}
try {
zipFile.close(); //********这样就OK了!!!!!!!
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
try {
zipFile.close(); //********这样就OK了!!!!!!!
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但是我现在有个疑问,我这个ZipUtility是个共同的类,在我的项目中别处调用这个方法解压后,可以删除的(注:别处在调用这个方法时,下面还有别的文件操作:对解压后的文件进行读写操作).但我这个功能.调用这个方法后,就没有操作了.我比较这几个调用的地方都没有做zipFile.close()操作,为何呢?
谢谢您.
我上面完成的功能是从数据库拿出BLOB的数据转换到本地ZIP文件中,然后再把这个ZIP文件解压到别的地方.然后ZIP文件删掉.