package org.mapfish.print.servlet.job.loader; import com.google.common.io.Closer; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.URI; import java.nio.channels.Channels; import java.nio.channels.FileChannel; /** * Loads reports from file uris. * <p></p> */ public class FileReportLoader implements ReportLoader { @Override public final boolean accepts(final URI reportURI) { return reportURI.getScheme().equals("file"); } @Override public final void loadReport(final URI reportURI, final OutputStream out) throws IOException { Closer closer = Closer.create(); try { FileInputStream in = closer.register(new FileInputStream(reportURI.getPath())); FileChannel channel = closer.register(in.getChannel()); channel.transferTo(0, Long.MAX_VALUE, Channels.newChannel(out)); } finally { closer.close(); } } }