java压缩指定目录下的所有文件和文件夹的代码

it2022-05-25  65

将代码过程较好的代码段备份一下,下边资料是关于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) {}}

转载于:https://www.cnblogs.com/51jiaoshou/p/10665621.html


最新回复(0)