org.xhtmlrenderer.util.IOUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of flying-saucer-core Show documentation
Show all versions of flying-saucer-core Show documentation
Flying Saucer is a CSS 2.1 renderer written in Java. This artifact contains the core rendering and layout code as well as Java2D output.
package org.xhtmlrenderer.util;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
/**
* @author patrick
*/
public class IOUtil {
public static File copyFile(File page, File outputDir) throws IOException {
InputStream in = null;
OutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(page));
File outputFile;
outputFile = new File(outputDir, page.getName());
out = new BufferedOutputStream(new FileOutputStream(outputFile));
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.flush();
out.close();
return outputFile;
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
// swallow
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
// swallow
}
}
}
}
public static void deleteAllFiles(final File dir) throws IOException {
File[] files = dir.listFiles();
for (int i = 0; i < files.length; i++) {
File file = files[i];
if (!file.delete()) {
throw new IOException("Cleanup directory " + dir + ", can't delete file " + file);
}
}
}
/**
* Attempts to open a connection, and a stream, to the URI provided. timeouts will be set for opening the connection
* and reading from it. will return the stream, or null if unable to open or read or a timeout occurred. Does not
* buffer the stream.
*/
public static InputStream openStreamAtUrl(String uri) {
InputStream is = null;
try {
final URLConnection uc = new URL(uri).openConnection();
// If using Java 5+ you can set timeouts for the URL connection--useful if the remote
// server is down etc.; the default timeout is pretty long
//
//uc.setConnectTimeout(10 * 1000);
//uc.setReadTimeout(30 * 1000);
//
// TODO:CLEAN-JDK1.4
// Since we target 1.4, we use a couple of system properties--note these are only supported
// in the Sun JDK implementation--see the Net properties guide in the JDK
// e.g. file:///usr/java/j2sdk1.4.2_17/docs/guide/net/properties.html
System.setProperty("sun.net.client.defaultConnectTimeout", String.valueOf(10 * 1000));
System.setProperty("sun.net.client.defaultReadTimeout", String.valueOf(30 * 1000));
uc.connect();
is = uc.getInputStream();
} catch (java.net.MalformedURLException e) {
XRLog.exception("bad URL given: " + uri, e);
} catch (FileNotFoundException e) {
XRLog.exception("item at URI " + uri + " not found");
} catch (IOException e) {
XRLog.exception("IO problem for " + uri, e);
}
return is;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy