ChronoXIII ChronoXIII - 10 days ago 6
Java Question

Determine the size of an InputStream

My current situation is: I have to read a file and put the contents into

InputStream
. Afterwards I need to place the contents of the
InputStream
into a byte array which requires (as far as I know) the size of the
InputStream
. Any ideas?

As requested, I will show the input stream that I am creating from an uploaded file

InputStream uploadedStream = null;
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
java.util.List items = upload.parseRequest(request);
java.util.Iterator iter = items.iterator();

while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
uploadedStream = item.getInputStream();
//CHANGE uploadedStreambyte = item.get()
}
}


The request is a
HttpServletRequest
object, which is like the
FileItemFactory
and
ServletFileUpload
is from the Apache Commons FileUpload package.

Answer

I just wanted to add, Apache Commons IO has stream support utilities to perform the copy. (Btw, what do you mean by placing the file into an inputstream? Can you show us your code?)

Edit:

Okay, what do you want to do with the contents of the item? There is an item.get() which returns the entire thing in a byte array.

Edit2

item.getSize() will return the uploaded file size.