将代码过程较好的代码段备份一下,下边资料是关于java压缩指定目录下的所有文件和文件夹的代码,希望对码农有帮助。

String sourceDir="E:\test";
int parentDirectoryLen=sourceDir.lastIndexOf(File.separator)+1;
File[] copyfoldersList = new File(sourceDir).listFiles();
FileOutputStream fos = new FileOutputStream("E:\test.zip");
ZipOutputStream zipOut = new ZipOutputStream(fos);
for (int k = 0; k < copyfoldersList.length; k++) {
 if (copyfoldersList[k].isDirectory()) {
 LinkedList<String> copysourcepath = new LinkedList<String>(Arrays.asList(copyfoldersList[k].getAbsolutePath()));
 while (copysourcepath.size() > 0) {
 File folders = new File(copysourcepath.peek());
 String[] file = folders.list();
 for (int i = 0; i < file.length; i++) {
 File ff = new File(copysourcepath.peek(), file[i]);
 if (ff.isFile()) {
 FileInputStream fis =null;
 try {
 fis = new FileInputStream(ff);
 ZipEntry entry = new ZipEntry(ff.getAbsoluteFile().substring(parentDirectoryLen));
 zipOut.putNextEntry(entry);
 int nNumber;
 byte[] buffer = new byte[Long.MIN_VALUE];
 while ((nNumber = fis.read(buffer)) != -1)
 zipOut.write(buffer, 0, nNumber);
 } catch (IOException e) {
 e.printStackTrace();
 zipOut.close();
 fos.close();
 }finally{
 try {
 fis.close();
 } catch (IOException e) {}
 }
 } else if (ff.isDirectory()) {
 for (File f : temp.listFiles()) {
 if (f.isDirectory())
 copysourcepath.add(f.getPath());
 else if (f.isFile()) {
 FileInputStream fis =null;
 try {
 fis = new FileInputStream(f);
 ZipEntry entry = new ZipEntry(f.getAbsoluteFile().substring(parentDirectoryLen));
 zipOut.putNextEntry(entry);
 int nNumber;
 byte[] buffer = new byte[Long.MIN_VALUE];
 while ((nNumber = fis.read(buffer)) != -1)
 zipOut.write(buffer, 0, nNumber);
 } catch (IOException e) {
 e.printStackTrace();
 zipOut.close();
 fos.close();
 }finally{
 try {
 fis.close();
 } catch (IOException e) {}
 }
 }
 }
 }
 }
 copysourcepath.removeFirst();
 }
 }
}
try {
 zipOut.flush();
} catch (IOException e) {
 e.printStackTrace();
}finally{
 try {
 zipOut.close();
 fos.close();
 } catch (IOException e) {}
}