我有一个Java程序如下,用于压缩文件夹作为一个整体。出现在压缩文件中的文件路径
public static void zipDir(String dir2zip, ZipOutputStream zos)
{
try
{
File zipDir= new File(dir2zip);
String[] dirList = zipDir.list();
byte[] readBuffer = new byte[2156];
int bytesIn = 0;
for(int i=0; i<dirList.length; i++)
{
File f = new File(zipDir, dirList[i]);
if(f.isDirectory())
{
String filePath = f.getPath();
zipDir(filePath, zos);
continue;
}
FileInputStream fis = new FileInputStream(f);
ZipEntry anEntry = new ZipEntry(f.getPath());
zos.putNextEntry(anEntry);
while((bytesIn = fis.read(readBuffer)) != -1)
{
zos.write(readBuffer, 0, bytesIn);
}
fis.close();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(){
String date=new java.text.SimpleDateFormat("MM-dd-yyyy").format(new java.util.Date());
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("Output/" + date + "_RB" + ".zip"));
zipDir("Output/" + date + "_RB", zos);
zos.close();
}
我的查询在这里。要压缩的目标文件夹(+日期+ _RB)存在于名为Output的文件夹中。压缩成功后,当我提取压缩文件时,我找到一个文件夹Output,其中存在(+ date + _RB)所需的文件夹。在提取压缩文件后,我不需要该Output文件夹,而应该直接单独提取所需的文件夹。请告知。
UPDATE:
我试图Isaac的答案。提取生成的zip文件时,没有提取文件夹。只有所有文件夹内的文件才会被提取。我只是不需要在生成的zip文件中单独的“输出”文件夹。但是该程序的功能是,它不会提取Output文件夹中的所有其他文件夹,而只是提取这些文件夹中的文件。请告知如何进行......
请查看我更新的问题 – LGAP 2010-10-21 16:00:42
现在,发生这种情况是因为您没有在ZIP中包含目录条目。将此添加到'f.isDirectory()'条件:'zos.putNextEntry(new ZipEntry(filePath))'。 – Isaac 2010-10-21 17:50:41
对不起,我不能让你艾萨克!你能更简单地解释我吗? – LGAP 2010-10-22 16:19:18