From: Jim Procter Date: Wed, 4 Nov 2015 17:51:54 +0000 (+0000) Subject: JAL-1950 - cache URL as a local file (needs a test case) X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=c337a28299e0afd89a45e3f76ef3e963b85f4ec1;p=jalview.git JAL-1950 - cache URL as a local file (needs a test case) --- diff --git a/src/jalview/util/HttpUtils.java b/src/jalview/util/HttpUtils.java index 991a20a..769e15b 100644 --- a/src/jalview/util/HttpUtils.java +++ b/src/jalview/util/HttpUtils.java @@ -20,6 +20,9 @@ ******************************************************************************/ package jalview.util; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; @@ -64,4 +67,46 @@ public class HttpUtils return false; } + /** + * download from given URL and return a pointer to temporary file + */ + public static File fetchURLToTemp(String url) throws OutOfMemoryError, + IOException + { + long time = System.currentTimeMillis(); + URL rcall = new URL(url); + + InputStream is = new BufferedInputStream(rcall.openStream()); + File outFile = null; + try + { + outFile = File.createTempFile("jalview", ".xml"); + outFile.deleteOnExit(); + if (outFile.length() == 0) + { + outFile.delete(); + return null; + } + } catch (Exception ex) + { + } + + if (outFile != null) + { + FileOutputStream fio = new FileOutputStream(outFile); + byte[] bb = new byte[32 * 1024]; + int l; + while ((l = is.read(bb)) > 0) + { + fio.write(bb, 0, l); + } + fio.close(); + is.close(); + return outFile; + } + else + { + return null; + } + } }