protected void extractFile( File srcF, File dir, InputStream compressedInputStream, String entryName, Date entryDate, boolean isDirectory, Integer mode) throws IOException, ArchiverException { File f = FileUtils.resolveFile(dir, entryName); try { if (!isOverwrite() && f.exists() && f.lastModified() >= entryDate.getTime()) { return; } // create intermediary directories - sometimes zip don't add them File dirF = f.getParentFile(); if (dirF != null) { dirF.mkdirs(); } if (isDirectory) { f.mkdirs(); } else { byte[] buffer = new byte[1024]; int length; FileOutputStream fos = null; try { fos = new FileOutputStream(f); while ((length = compressedInputStream.read(buffer)) >= 0) { fos.write(buffer, 0, length); } fos.close(); fos = null; } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { // ignore } } } } f.setLastModified(entryDate.getTime()); if (mode != null) { ArchiveEntryUtils.chmod(f, mode.intValue(), getLogger()); } } catch (FileNotFoundException ex) { getLogger().warn("Unable to expand to file " + f.getPath()); } }
private void writeFile(File dir, String fname, int mode) throws IOException, ArchiverException { File file = new File(dir, fname); FileWriter writer = null; try { if (file.getParentFile() != null) { file.getParentFile().mkdirs(); } writer = new FileWriter(file); writer.write("This is a test file."); } finally { IOUtil.close(writer); } ArchiveEntryUtils.chmod(file, mode, logger, false); }