声纳:如何使用try-with-resources关闭FileOutputStream

声纳正在给出一个错误,即应关闭此FileOutputStream 。 我需要修改以下代码以使用try-with-resources 。 我该怎么做呢?

 public void archivingTheFile(String zipFile){ byte[] buffer = new byte[1024]; try{ FileOutputStream fos = new FileOutputStream(zipFile); ZipOutputStream zos = new ZipOutputStream(fos); for(String file : this.fileList){ ZipEntry ze= new ZipEntry(file); zos.putNextEntry(ze); FileInputStream in = new FileInputStream(SOURCE_FOLDER + File.separator + file); int len; while ((len = in.read(buffer)) > 0) { zos.write(buffer, 0, len); } in.close(); } zos.closeEntry(); zos.close(); }catch(IOException ex){ LOGGER.error("Exception occurred while zipping file",ex); } } 

目前代码尚未准备好处理exception – 您最终错过了关闭打开流的块。 而且,当然,你是对的 – 使用try-with-resources解决了这个问题:

 public void archivingTheFile(String zipFile) { byte[] buffer = new byte[1024]; try (FileOutputStream fos = new FileOutputStream(zipFile); ZipOutputStream zos = new ZipOutputStream(fos)) { for(String file : this.fileList) { try (FileInputStream in = new FileInputStream(SOURCE_FOLDER + File.separator + file)) { ZipEntry ze = new ZipEntry(file); zos.putNextEntry(ze); int len; while ((len = in.read(buffer)) > 0) { zos.write(buffer, 0, len); } } } } catch(IOException ex) { LOGGER.error("Exception occurred while zipping file",ex); } }