From 2fa87a71fae2d3074acc48d405779c61a11b646d Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 14 Feb 2012 21:16:10 +0100 Subject: [PATCH] use custom InputStream traversal instead of a full byte array (SPR-9118) --- .../core/io/AbstractResource.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/org.springframework.core/src/main/java/org/springframework/core/io/AbstractResource.java b/org.springframework.core/src/main/java/org/springframework/core/io/AbstractResource.java index e2360b4748..1d48f7fb33 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/io/AbstractResource.java +++ b/org.springframework.core/src/main/java/org/springframework/core/io/AbstractResource.java @@ -25,7 +25,6 @@ import java.net.URISyntaxException; import java.net.URL; import org.springframework.core.NestedIOException; -import org.springframework.util.FileCopyUtils; import org.springframework.util.ResourceUtils; /** @@ -115,7 +114,22 @@ public abstract class AbstractResource implements Resource { * @see #getInputStream() */ public long contentLength() throws IOException { - return FileCopyUtils.copyToByteArray(getInputStream()).length; + InputStream is = getInputStream(); + try { + long size = 0; + byte[] buf = new byte[255]; + for (int read = is.read(buf); read != -1;) { + size += read; + } + return size; + } + finally { + try { + is.close(); + } + catch (IOException ex) { + } + } } /**