public static void copy(ModifiableTraversableSource from, ModifiableTraversableSource to) throws IOException { if (!from.exists()) { throw new IOException("Cannot find source file/folder"); } if (from.isCollection()) { to.makeCollection(); Collection contents; try { contents = from.getChildren(); } catch (SourceException se) { throw new RuntimeException("Unable to list contents for collection " + from); } for (Iterator iter = contents.iterator(); iter.hasNext(); ) { ModifiableTraversableSource src = (ModifiableTraversableSource) iter.next(); SourceUtil.copy(src, resolve(to.getURI() + "/" + src.getName())); } } else { to = (ModifiableTraversableSource) resolve(to.getURI()); InputStream in = null; OutputStream out = null; try { in = from.getInputStream(); out = to.getOutputStream(); copy(in, out); } finally { if (out != null) out.close(); if (in != null) in.close(); } } }
public static void save(Part part, ModifiableTraversableSource destination) throws Exception { InputStream in = null; OutputStream out = null; try { in = part.getInputStream(); out = destination.getOutputStream(); copy(in, out); } finally { if (out != null) { out.close(); } if (in != null) { in.close(); } } }